क्या वैकल्पिक फ़ंक्शन के साथ टाइपस्क्रिप्ट में एक इंटरफ़ेस बनाना संभव है?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
क्या वैकल्पिक फ़ंक्शन के साथ टाइपस्क्रिप्ट में एक इंटरफ़ेस बनाना संभव है?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
जवाबों:
वर्तमान में तीन वाक्यविन्यास हैं जो टाइपस्क्रिप्ट इंटरफेस में फ़ंक्शन घोषणाओं की अनुमति देता है:
validationफ़ंक्शन के अपने उदाहरण का उपयोग करते हुए 1 पैरामीटर ( anyप्रकार का) और एक booleanवापसी मूल्य:
validation: {(flag: any): boolean};
या नए सिंटैक्स में:
validation(flag: any) : boolean;
या एक विकल्प है:
validation: (flag: any) => boolean;
समाधान:
इसलिए पुराने सिंटैक्स के साथ इसे वैकल्पिक बनाना आसान है:
validation?: {(flag: any): boolean};
दूसरे सिंटैक्स के साथ (हाल ही में जोड़ - धन्यवाद @toothbrush)
validation?(flag: any) : boolean;
या तीसरे सिंटैक्स में (जैसा कि आपने पाया):
validation?: (flag: any) => boolean;
anyवह एक प्रकार नहीं है, बल्कि एक पैरामीटर का नाम है जो कि अनुमानित प्रकार का है any। पैरामीटर का नाम, यहां तक कि इंटरफेस पर भी होना चाहिए। --NoImplicitAny सक्षम होने पर यह कोड संकलित करने में विफल रहेगा। यह कुछ इस तरह होना चाहिए: validation?:(whatever:any) => boolean;जहां whateverकुछ उचित पैरामीटर नाम है।
if (object.validation):) उसे वस्तु संदर्भ के खिलाफ होने की जरूरत है, इसलिए if (this.validation)यह आपकी परिस्थिति के आधार पर भी उचित हो सकता है।