Pertama-tama, Typecript hanya mendukung get
dan set
sintaks saat menargetkan Ecmascript 5. Untuk mencapai ini, Anda harus memanggil kompilator dengan
tsc --target ES5
Antarmuka tidak mendukung getter dan setter. Untuk mendapatkan kode Anda untuk dikompilasi, Anda harus mengubahnya menjadi
interface I {
getName():string;
}
class C implements I {
getName():string {
return null;
}
}
Skrip jenis apa yang mendukung adalah sintaks khusus untuk bidang di konstruktor. Dalam kasus Anda, Anda dapat melakukannya
interface I {
getName():string;
}
class C implements I {
constructor(public name: string) {
}
getName():string {
return name;
}
}
Perhatikan bagaimana kelas C
tidak menentukan bidang name
. Ini sebenarnya dideklarasikan menggunakan gula sintaksis public name: string
di konstruktor.
Seperti yang ditunjukkan Sohnee, antarmuka sebenarnya seharusnya menyembunyikan detail implementasi apa pun. Dalam contoh saya, saya telah memilih antarmuka yang memerlukan metode pengambil gaya java. Namun, Anda juga dapat memiliki properti dan kemudian membiarkan kelas memutuskan cara mengimplementasikan antarmuka.
=>
untuk mendefinisikan metode kelas seperti ini:name = (a: string) => this._name;
tetapi dalam keluaran JS, ia akan didefinisikan di dalam fungsi kelas daripada memperluas objek prototipe-nya.