मुझे लगता है कि आपके पास ऐसा करने के लिए मूल रूप से पांच अलग-अलग विकल्प हैं। आप जो लक्ष्य हासिल करना चाहते हैं उसके आधार पर उनमें से चुनना आसान हो सकता है।
अधिकांश मामलों में एक वर्ग का उपयोग करने का सबसे अच्छा तरीका है और इसे तुरंत करना है , क्योंकि आप टाइप चेकिंग लागू करने के लिए टाइपस्क्रिप्ट का उपयोग कर रहे हैं।
interface IModal {
content: string;
form: string;
//...
//Extra
foo: (bar: string): void;
}
class Modal implements IModal {
content: string;
form: string;
foo(param: string): void {
}
}
यहां तक कि अगर अन्य तरीके एक इंटरफ़ेस से एक ऑब्जेक्ट बनाने के लिए आसान तरीके पेश कर रहे हैं, तो आपको अपने इंटरफ़ेस को अलग करने पर विचार करना चाहिए , यदि आप अलग-अलग मामलों के लिए अपनी ऑब्जेक्ट का उपयोग कर रहे हैं, और यह इंटरफ़ेस को अलग नहीं करता है:
interface IBehaviour {
//Extra
foo(param: string): void;
}
interface IModal extends IBehaviour{
content: string;
form: string;
//...
}
दूसरी ओर, उदाहरण के लिए, इकाई के परीक्षण के दौरान आपका कोड (यदि आप बार-बार चिंताओं के पृथक्करण को लागू नहीं कर सकते हैं), तो आप उत्पादकता की खातिर कमियां स्वीकार करने में सक्षम हो सकते हैं। आप ज्यादातर अन्य तृतीय पक्ष * .d.ts इंटरफेस के लिए नकली बनाने के लिए अन्य तरीके लागू कर सकते हैं। और यह हर विशाल इंटरफ़ेस के लिए हमेशा पूर्ण अनाम वस्तुओं को लागू करने के लिए एक दर्द हो सकता है।
इस रास्ते पर आपका पहला विकल्प एक खाली वस्तु बनाना है :
var modal = <IModal>{};
दूसरे को पूरी तरह से अपने इंटरफेस के अनिवार्य भाग का एहसास । यह उपयोगी हो सकता है कि आप 3 जी जावास्क्रिप्ट पुस्तकालयों को बुला रहे हैं, लेकिन मुझे लगता है कि आपको पहले की तरह एक वर्ग बनाना चाहिए:
var modal: IModal = {
content: '',
form: '',
//...
foo: (param: string): void => {
}
};
तीसरा आप अपने इंटरफेस का सिर्फ एक हिस्सा बना सकते हैं और एक अनाम ऑब्जेक्ट बना सकते हैं, लेकिन इस तरह से आप अनुबंध को पूरा करने के लिए जिम्मेदार हैं
var modal: IModal = <any>{
foo: (param: string): void => {
}
};
यदि इंटरफेस वैकल्पिक हैं, तो भी मेरे जवाब को संक्षेप में बताएं, क्योंकि वे जावास्क्रिप्ट कोड में ट्रांसप्लड नहीं हैं, टाइपस्क्रिप्ट वहाँ है, जो बुद्धिमानी से और लगातार उपयोग किए जाने पर अमूर्तता का एक नया स्तर प्रदान करते हैं। मुझे लगता है, सिर्फ इसलिए कि आप उन्हें अपने स्वयं के कोड से अधिकांश मामलों में खारिज कर सकते हैं जो आपको नहीं करना चाहिए।