सबसे पहले, टाइपस्क्रिप्ट केवल सपोर्ट करता है get
और set
जब सिनेमैक्स 5 को लक्षित करता है तो सिंटैक्स। इसे प्राप्त करने के लिए, आपको कंपाइलर को कॉल करना होगा
tsc --target ES5
इंटरफेस गेटर्स और सेटर का समर्थन नहीं करते हैं। संकलन करने के लिए अपना कोड प्राप्त करने के लिए आपको इसे बदलना होगा
interface I {
getName():string;
}
class C implements I {
getName():string {
return null;
}
}
क्या टाइपस्क्रिप्ट समर्थन करता है, निर्माणकर्ताओं में फ़ील्ड के लिए एक विशेष वाक्यविन्यास है। आपके मामले में, आप कर सकते थे
interface I {
getName():string;
}
class C implements I {
constructor(public name: string) {
}
getName():string {
return name;
}
}
ध्यान दें कि वर्ग C
फ़ील्ड को कैसे निर्दिष्ट नहीं करता है name
। यह वास्तव public name: string
में कंस्ट्रक्टर में सिंटैक्टिक चीनी का उपयोग करके घोषित किया गया है।
जैसा कि सोहनी बताते हैं, इंटरफ़ेस वास्तव में किसी भी कार्यान्वयन विवरण को छिपाना चाहिए। मेरे उदाहरण में, मैंने एक जावा-स्टाइल गेट्टर विधि की आवश्यकता के लिए इंटरफ़ेस चुना है। हालांकि, आप एक संपत्ति भी हो सकते हैं और फिर वर्ग को यह तय करने दें कि इंटरफ़ेस को कैसे लागू किया जाए।
=>
इस तरह वर्ग विधियों को परिभाषित करने के लिए उपयोग कर सकते हैं :name = (a: string) => this._name;
लेकिन आउटपुट जेएस में इसे अपने प्रोटोटाइप ऑब्जेक्ट को विस्तारित करने के बजाय वर्ग फ़ंक्शन के अंदर परिभाषित किया जाएगा।