2015-10-05 5 views
19

मेरे टाइपस्क्रिप्ट प्रोजेक्ट में, मैं बाहरी जेएस निर्भरताओं के लिए DefinitelyTyped परिभाषाओं का उपयोग करता हूं।.d.ts फ़ाइल में परिभाषित इंटरफ़ेस बढ़ाएं

कभी-कभी ऐसा हो सकता है कि ये परिभाषाएं पुरानी हैं। यह कुछ पुस्तकालयों की तुलना में भी हो सकता है रनटाइम पर नई विधियां जोड़ सकते हैं, जैसे express-validator जिसमें आप कस्टम सत्यापनकर्ता फ़ंक्शन को परिभाषित कर सकते हैं।

इसलिए मैं उन .d.ts परिभाषाओं को नई विधियों और/या गुणों को जोड़ना चाहता हूं।

तो अगर मैं express-validator.d.ts में मेरी DefinitelyTyped defininiton:

declare module ExpressValidator { 
    export interface Validator { 
    is(): Validator; 
    not(): Validator; 
    isEmail(): Validator; 
    ... 
    } 
} 

कैसे मैं उदाहरण के लिए, के भीतर Validator इंटरफ़ेस विस्तार कर सकते हैं, मेरे application.ts?

///<reference path='../typings/tsd.d.ts' /> 

import expressValidator = require('express-validator'); 
export var app = express(); 

app.use(expressValidator({ 
    customValidators: { 
     isArray: function(value) { 
      return Array.isArray(value); 
     } 
} 
})); 

// How to extend Validator interface adding isArray() method?? 

उत्तर

20

// कैसे isArray() विधि जोड़ने सत्यापनकर्ता इंटरफ़ेस विस्तार करने के लिए ??

आप एक फाइल एक मॉड्यूल (some guidance here) है कि में ऐसा नहीं कर सकते और क्योंकि आप import expressValidator है आपकी फ़ाइल एक मॉड्यूल है।

बजाय एक extendedValidator.d.ts बना सकते हैं और टाइपप्रति के इंजन के लिए नई सामग्री जोड़ें:

declare module ExpressValidator { 
    export interface Validator { 
    isArray: any; 
    } 
} 
+1

आप एक बार यह बनाई गई है कुछ 'd.ts' फ़ाइल के साथ विशिष्ट करने के लिए है? मैंने यह किया है लेकिन मुझे अभी भी त्रुटि मिल रही है कि मेरी नई संपत्ति मौजूद नहीं है। क्या मुझे इसे किसी विशिष्ट स्थान पर रखना है या इसे संकलक द्वारा मान्यता प्राप्त करने के लिए कुछ और करना है? – WillyC

+0

@basarat क्या आपको इंटरफ़ेस "निर्यात" करना है? क्या यह आवश्यक है? क्या होता है जब आप निर्यात नहीं करते हैं? –

+0

@ मोहम्मदनूर आपको इसे निर्यात करना होगा यदि आप इसे सार्वजनिक रूप से उपलब्ध करना चाहते हैं। –

संबंधित मुद्दे