Prima di tutto, Carattere tipografico supporta solo get
e set
sintassi quando rivolte a ECMAScript 5. Per raggiungere questo obiettivo, è necessario chiamare il compilatore con
tsc --target ES5
Le interfacce non supportano getter e setter. Per fare in modo che il tuo codice si compili, dovresti cambiarlo in
interface I {
getName():string;
}
class C implements I {
getName():string {
return null;
}
}
Ciò che il dattiloscritto supporta è una sintassi speciale per i campi nei costruttori. Nel tuo caso, potresti avere
interface I {
getName():string;
}
class C implements I {
constructor(public name: string) {
}
getName():string {
return name;
}
}
Nota come la classe C
non specifica il campo name
. In realtà è dichiarato utilizzando lo zucchero sintattico public name: string
nel costruttore.
Come sottolinea Sohnee, l'interfaccia dovrebbe effettivamente nascondere tutti i dettagli di implementazione. Nel mio esempio, ho scelto l'interfaccia per richiedere un metodo getter in stile java. Tuttavia, puoi anche una proprietà e lasciare che sia la classe a decidere come implementare l'interfaccia.
=>
per definire metodi di classe come questo:name = (a: string) => this._name;
ma nell'output JS sarà definito all'interno della funzione di classe piuttosto che estendere il suo oggetto prototipo.