हमें कथन में declare
क्यों चाहिए?'निर्यात घोषणा वर्ग क्रियाओं' में 'घोषित' क्या करता है?
export declare class Actions {
...
}
हमें कथन में declare
क्यों चाहिए?'निर्यात घोषणा वर्ग क्रियाओं' में 'घोषित' क्या करता है?
export declare class Actions {
...
}
पाया मैं के लिए क्या देख रहा था:
प्रचार बनाम वर
var
एक नया वेरिएबल पैदा करता है। declare
टाइपस्क्रिप्ट को बताने के लिए प्रयोग किया जाता है कि चर कहीं और बनाया गया है। यदि आप declare
का उपयोग करते हैं, तो जेनरेट की गई जावास्क्रिप्ट में कुछ भी जोड़ा नहीं जाता है - यह केवल कंपाइलर के लिए एक संकेत है।
उदाहरण के लिए, यदि आप किसी बाहरी स्क्रिप्ट कि var externalModule
को परिभाषित करता है का उपयोग करें, आप declare var externalModule
का प्रयोग करेंगे टाइपप्रति संकलक कि externalModule
पहले से ही
मेरे पास एक बाहरी जेएस के साथ एक समान परिदृश्य है जो दूसरों के बीच एक चर 'बाहरी मॉड्यूल' को परिभाषित करता है। रनटाइम पर 'बाहरी मॉड्यूल' को अपरिभाषित करने का कारण क्या हो सकता है लेकिन कुछ अन्य चर नहीं? –
स्थापित किया गया है यह समझने के लिए करने के लिए संकेत करने के लिए, आपको पहले समझना होगा "घोषित "कीवर्ड।
टाइपप्रति घोषित कीवर्ड चर है कि एक टाइपप्रति फ़ाइल से उत्पन्न हो सकता है की घोषणा करने के लिए किया जाता है:
यहाँ Gil Fink's Blog से एक अच्छी व्याख्या है।
उदाहरण के लिए, की सुविधा देता है की कल्पना है कि हम एक पुस्तकालय बुलाया MyLibrary कि एक टाइपप्रति घोषणा फ़ाइल नहीं है और वैश्विक नाम स्थान में एक नाम स्थान कहा जाता MyLibrary होता है। आप अपने टाइपप्रति कोड में है कि पुस्तकालय का उपयोग करना चाहते हैं, तो आप निम्नलिखित कोड का उपयोग कर सकते हैं:
declare var myLibrary;
प्रकार है कि टाइपप्रति क्रम MyLibrary चर करने के लिए दे देंगे किसी भी प्रकार है। यहां समस्या यह है कि आपके पास उस चर के लिए डिज़ाइन समय में इंटेलिजेंस नहीं होगा लेकिन आप अपने कोड में लाइब्रेरी का उपयोग करने में सक्षम होंगे। घोषित कीवर्ड का उपयोग किए बिना समान व्यवहार करने के लिए एक अन्य विकल्प बस किसी भी प्रकार के साथ एक चर का उपयोग कर रहा है:
var myLibrary: any;
कोड उदाहरण के दोनों एक ही जावास्क्रिप्ट उत्पादन में परिणाम होगा लेकिन घोषित उदाहरण अधिक पठनीय है और व्यक्त करता है एक परिवेश घोषणा।
तो तुम्हारे जाने के बाद "घोषित" कीवर्ड को समझते हैं, वापस भी आप पाते हैं
export declare class Action{
...
}
वर्ग की वास्तविक कार्यान्वयन शायद कहीं और — शायद एक .js फ़ाइल में है पर जाएँ।
संभावित डुप्लिकेट [टाइपस्क्रिप्ट में "कक्षा घोषित करें" और "इंटरफेस" के बीच क्या अंतर है) (http://stackoverflow.com/questions/14345485/whats-the-difference-between-declare-class-and-interface -इन-टाइपस्क्रिप्ट) – thanksd