Tout d'abord, Typescript ne prend en charge get
et la set
syntaxe que pour cibler Ecmascript 5. Pour ce faire, vous devez appeler le compilateur avec
tsc --target ES5
Les interfaces ne prennent pas en charge les getters et les setters. Pour obtenir votre code à compiler, vous devrez le changer en
interface I {
getName():string;
}
class C implements I {
getName():string {
return null;
}
}
Ce que dactylographié prend en charge, c'est une syntaxe spéciale pour les champs dans les constructeurs. Dans votre cas, vous pourriez avoir
interface I {
getName():string;
}
class C implements I {
constructor(public name: string) {
}
getName():string {
return name;
}
}
Remarquez que la classe C
ne spécifie pas le champ name
. Il est en fait déclaré en utilisant du sucre syntaxique public name: string
dans le constructeur.
Comme le souligne Sohnee, l'interface est en fait censée cacher tous les détails d'implémentation. Dans mon exemple, j'ai choisi l'interface pour exiger une méthode getter de style java. Cependant, vous pouvez également créer une propriété, puis laisser la classe décider comment implémenter l'interface.
=>
pour définir des méthodes de classe comme celle-ci:name = (a: string) => this._name;
mais dans le JS de sortie, elle sera définie dans la fonction de classe plutôt que d'étendre son objet prototype.