2017-07-28 16 views
7

मैं पैकेज के लिए typings है कि उन्हें नहीं है प्रदान करने के लिए कोशिश कर रहा हूँ:मुझे कस्टम .d.ts फ़ाइलों को कहां रखना चाहिए?

error TS7016: Could not find a declaration file for module 'inputmask-core'. './node_modules/inputmask-core/lib/index.js' implicitly has an 'any' type. 
Try `npm install @types/inputmask-core` if it exists or add a new declaration (.d.ts) file containing `declare module 'inputmask-core';` 

मैं webpack में ts-लोडर उपयोग कर रहा हूँ टाइपप्रति 2.4.2 के साथ, और मैं निम्नलिखित प्रकार जड़ों में स्थापित है tsconfig.json:

src/client/types 
|--inputmask-core 
    |--index.d.ts 
में निम्नलिखित के साथ

:

"typeRoots": [ 
    "./node_modules/@types", 
    "./src/client/types" 
] 

मैं node_modules/@types में पैकेज संरचना की नकल करने की कोशिश की:

declare class InputMask {} 
export default InputMask; 

लेकिन त्रुटि अभी भी वहां है। मैं क्या गलत कर रहा हूं? मुझे उन कस्टम .d.ts फ़ाइलों को कहां रखना चाहिए?

और node_modules/@types और किसी अन्य प्रकार की रूट के बीच क्या अंतर है? टाइपस्क्रिप्ट उन्हें अलग तरीके से क्यों व्यवहार करता है?

उत्तर

3

संभव समाधान: जगह index.d.ts में निम्नलिखित है, और यह संकलन होगा:

declare module "inputmask-core" { 
    declare class InputMask {} 
    export default InputMask; 
} 

मैं अभी भी, विशेष हैंडलिंग समझ में नहीं आता कि node_modules/@types हो जाता है, हालांकि।

+0

'node_modules/@ प्रकार' का उपयोग तीसरे पक्ष के पैकेजों को रखने के लिए किया जाता है जिसमें पैकेजों के लिए प्रकार की जानकारी होती है जो कि घोषणाओं के साथ नहीं आती है। इसमें विशेष हैंडलिंग होती है कि आप इसे सीधे आयात नहीं करते हैं, बल्कि प्रत्येक घोषणा पैकेज में इसे पैकेज पर ओवरलैड के रूप में देखा जाता है जिसके लिए इसमें प्रकार होते हैं। '" typeRoots "आपको स्थान को कस्टमाइज़ करने या अतिरिक्त विशेष निर्देशिकाओं को जोड़ने की सुविधा देता है जो इस विशेष फैशन में इलाज करते हैं। –

+0

@AluanHaddad - यदि "typeRoots" में अतिरिक्त निर्देशिकाएं भी इस विशेष तरीके से इलाज की जाती हैं, तो कुछ प्रकार के लिए 'node_modules/@ प्रकार' से दूसरे प्रकार के रूट ब्रेक संकलन में निर्देशिका क्यों चलती है? – Rogach

+0

बताने के लिए यहां पर्याप्त जानकारी नहीं है। कोई tsconfig, मॉड्यूल रिज़ॉल्यूशन, इत्यादि। जो आपने समाप्त किया है वह एक _ambient बाहरी मॉड्यूल_ है और उसके पास अलग-अलग रिज़ॉल्यूशन अर्थशास्त्र हैं। विशेष रूप से, यह फ़ाइल के पथ से हल नहीं होता है। –

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