Primeiro de tudo, Typescript só suporta get
e set
sintaxe quando targetting ECMAScript 5. Para conseguir isso, você tem que chamar o compilador com
tsc --target ES5
As interfaces não oferecem suporte a getters e setters. Para obter o seu código para compilar, você teria que alterá-lo para
interface I {
getName():string;
}
class C implements I {
getName():string {
return null;
}
}
O que o typescript suporta é uma sintaxe especial para campos em construtores. No seu caso, você poderia ter
interface I {
getName():string;
}
class C implements I {
constructor(public name: string) {
}
getName():string {
return name;
}
}
Observe como a classe C
não especifica o campo name
. Na verdade, é declarado usando açúcar sintático public name: string
no construtor.
Como Sohnee aponta, a interface deve, na verdade, ocultar quaisquer detalhes de implementação. No meu exemplo, escolhi a interface para exigir um método getter no estilo java. No entanto, você também pode definir uma propriedade e deixar a classe decidir como implementar a interface.
=>
para definir métodos de classe como este:name = (a: string) => this._name;
mas no JS de saída, ele será definido dentro da função de classe em vez de estender seu objeto de protótipo.