Her şeyden önce, Typescript sadece Ecmascript 5'i hedeflerken destekler get
ve set
sözdizimini destekler . Bunu başarmak için, derleyiciyi şu şekilde çağırmalısınız:
tsc --target ES5
Arayüzler alıcıları ve ayarlayıcıları desteklemez. Kodunuzun derlenmesini sağlamak için kodunuzu şu şekilde değiştirmeniz gerekir:
interface I {
getName():string;
}
class C implements I {
getName():string {
return null;
}
}
Hangi tür yazısının desteklediği, kuruculardaki alanlar için özel bir sözdizimidir. Senin durumunda alabilirdin
interface I {
getName():string;
}
class C implements I {
constructor(public name: string) {
}
getName():string {
return name;
}
}
Sınıfın C
alanı nasıl belirtmediğine dikkat edin name
. Aslında public name: string
yapıcıda sözdizimsel şeker kullanılarak beyan edilir .
Sohnee'nin de belirttiği gibi, arayüzün aslında herhangi bir uygulama detayını gizlemesi gerekiyor. Örneğimde, arayüzü java tarzı bir alıcı yöntemi gerektirecek şekilde seçtim. Ancak, bir özelliği de uygulayabilir ve ardından arabirimin nasıl uygulanacağına sınıfın karar vermesine izin verebilirsiniz.
=>
gibi sınıf yöntemlerini tanımlamak için kullanabilirsiniz :name = (a: string) => this._name;
ancak çıktı JS'de prototip nesnesini genişletmek yerine sınıf işlevi içinde tanımlanacaktır.