मुझे कुछ परेशानी हो रही है कि इंटरफेस में कन्स्ट्रक्टर को कैसे परिभाषित किया जाता है। मैं पूरी तरह से कुछ गलत समझ सकता है। लेकिन मैंने अच्छे समय के लिए उत्तर खोजे हैं और मुझे इससे संबंधित कुछ भी नहीं मिला है।टाइपस्क्रिप्ट निर्माण हस्ताक्षर कार्यों के साथ कैसे इंटरफेस करता है?
मैं एक टाइपप्रति कक्षा में निम्नलिखित इंटरफ़ेस कैसे लागू करते हैं:
interface MyInterface {
new (...) : MyInterface;
}
एंडर्स हेल्स्बर्ग video इस (14 के आसपास पर मिनट) में यह करने के लिए कुछ इसी तरह से युक्त एक अंतरफलक पैदा करता है। लेकिन मेरे जीवन के लिए मैं इसे कक्षा में लागू नहीं कर सकता।
मैं शायद कुछ गलत समझ रहा हूं, मुझे क्या नहीं मिल रहा है?
संपादित करें:
स्पष्टीकरण के लिए। "नया (...)" के साथ मेरा मतलब "कुछ भी" था।
interface MyInterface {
new() : MyInterface;
}
class test implements MyInterface {
constructor() { }
}
यह मेरे लिए संकलन नहीं कर रहा है मैं "मिल क्लास 'परीक्षण' वाणी इंटरफेस 'MyInterface' लेकिन इसे लागू नहीं करता है:: मेरी समस्या यह है कि मैं इस काम के भी सबसे मूल संस्करण नहीं मिल सकता है प्रकार ' MyInterface 'को एक निर्माण हस्ताक्षर की आवश्यकता है, लेकिन इसे संकलित करने का प्रयास करते समय' परीक्षण 'की कमी होती है।
संपादित करें:
तो शोध इस में थोड़ा और अधिक प्रतिक्रिया दी है।
interface MyInterface {
new() : MyInterface;
}
class test implements MyInterface {
constructor() => test { return this; }
}
मान्य टाइपस्क्रिप्ट मान्य नहीं है और इससे समस्या हल नहीं होती है। आप कन्स्ट्रक्टर के रिटर्न प्रकार को परिभाषित नहीं कर सकते हैं। यह "परीक्षण" वापस आ जाएगा। निम्न में से हस्ताक्षर: कक्षा की परीक्षा { निर्माता() {} } होने के लिए लगता है "नई() => परीक्षण" (सिर्फ इतना है कि कोड को चिपकाया गया ऑनलाइन संपादक में "वर्ग" पर मँडरा द्वारा प्राप्त)। और यह वही है जो हम चाहते हैं और मैंने सोचा कि यह क्या होगा।
क्या कोई इस उदाहरण का उदाहरण दे सकता है जहां यह वास्तव में संकलित है?
संपादित करें (फिर से ...):
तो मैं के रूप में क्यों यह एक अंतरफलक में यह परिभाषित करने के लिए संभव है, लेकिन संभव नहीं है एक टाइपप्रति class.The निम्नलिखित कार्यों में लागू करने के लिए करने के लिए एक विचार के साथ आए हैं हो सकता है :
var MyClass = (function() {
function MyClass() { }
return MyClass;
})();
interface MyInterface {
new() : MyInterface;
}
var testFunction = (foo: MyInterface) : void => { }
var bar = new MyClass();
testFunction(bar);
तो क्या यह केवल टाइपस्क्रिप्ट की एक विशेषता है जो आपको जावास्क्रिप्ट को इंटरफ़ेस करने देती है? या जावास्क्रिप्ट का उपयोग कर वर्ग को लागू किए बिना टाइपस्क्रिप्ट में इसे कार्यान्वित करना संभव है?
पहले गलत प्रतिक्रिया के लिए खेद है। मैं अभी भी देख रहा हूं, और ईमानदारी से मेरा सबसे अच्छा अनुमान यह है कि सीटीआर संरचनाएं एक प्रकार को वापस करने में सक्षम नहीं होती हैं, और इंटरफेस में एक निर्दिष्ट करने की क्षमता एक बग हो सकती है। – asawyer
@asawyer हाँ यह अजीब लगता है। यह अजनबी भी है हालांकि अगर एंडर्स हेजल्सबर्ग आधिकारिक वीडियो में कुछ उपयोग करेगा जो प्रयोग योग्य नहीं है। – Nypan
मैंने कोडप्लेक्स साइट पर एक प्रश्न पोस्ट किया। http://typescript.codeplex.com/discussions/403413 – asawyer