En travaillant avec le tutoriel "Tour of Heroes" sur le site Web Angular, j'ai trouvé la syntaxe suivante (sous peu):
class Hero {
id: number,
name: string,
}
const aHero: Hero = {
id: 1,
name: 'Superman'
}
console.log(aHero instanceof Hero); //false
Quel serait le point en faisant cela? quand si je vérifie le type de "aHero", c'est seulement un objet commun et pas un type "Hero". Serait-il préférable d'initialiser un objet avec un constructeur?
class Hero {
constructor(id: number, name: string) {}
}
Vous pouvez utiliser la classe comme un type correspondant à votre utilisation. Donc, si Hero est une interface ou une classe, peu importe, vous l'utilisez comme type.
class Hero { id: number; name: string }
ou
interface Hero { id: number; name: string }
Ce qui suit ne concerne pas si Hero est une classe ou une interface
let hero: Hero = { id: 1, name: 'me' }
Où interface
et class
différencier est interface
est uniquement pour vous, il n'est pas transpilé en javascript. Un class
fait et vous ne pouvez pas new
un interface
.
Constructeur ou non Constructeur, si vous new
c'est une instanceof
. Essayez encore avec ça
let hero = new Hero();
Votre journal instanceof
sera true
car vous avez créé une instance de Hero avec la clé Word new
.
Je sais que cette question a déjà reçu une réponse, mais en ce qui concerne le code orienté objet, cela a toujours été comme cela.
Je crois que vous pouvez le faire sans constructeur:
let hero: Hero = { ID: 1, Name: 'goku'};
mais si vous voulez instancier avec le constructeur, vous pouvez le faire dans la classe
class Hero
{
//notice optional parameters. You have more flexibility this way.
constructor(id?: number, name?: string)
{
this.ID = id;
this.Name = name;
}
ID: number;
Name: string
}
Et le faire avec la mise en œuvre
let hero: Hero = new Hero(1,'goku');
let hero2: Hero = { ID: 2, Name: 'superman' }