En primer lugar, Letra de imprenta sólo es compatible get
y set
sintaxis al que apuntan a ECMAScript 5. Para lograrlo, hay que llamar al compilador
tsc --target ES5
Las interfaces no admiten getters ni setters. Para que su código se compile, tendrá que cambiarlo a
interface I {
getName():string;
}
class C implements I {
getName():string {
return null;
}
}
Lo que admite mecanografiado es una sintaxis especial para campos en constructores. En tu caso, podrías tener
interface I {
getName():string;
}
class C implements I {
constructor(public name: string) {
}
getName():string {
return name;
}
}
Observe cómo la clase C
no especifica el campo name
. En realidad, se declara usando azúcar sintáctico public name: string
en el constructor.
Como señala Sohnee, se supone que la interfaz oculta los detalles de implementación. En mi ejemplo, he elegido la interfaz para requerir un método getter de estilo java. Sin embargo, también puede establecer una propiedad y luego dejar que la clase decida cómo implementar la interfaz.
=>
para definir métodos de clase como este:name = (a: string) => this._name;
pero en el JS de salida se definirá dentro de la función de clase en lugar de extender su objeto prototipo.