विजुअल स्टूडियो कोड में, जब दो .js मॉड्यूल फ़ाइलें A.js and B.js होती हैं, तो मॉड्यूल B के अंदर मॉड्यूल A आयात करना हमें आयातित मॉड्यूल पर स्वत: पूर्ण का उपयोग करने की अनुमति देता है। मॉड्यूल ए को C.ts में आयात करते समय यह स्वतः पूर्ण उपलब्ध नहीं होता है और निश्चित रूप से संदेश Could not find a declaration file for module <PATH_TO_A_MODULE> दिखाई देता है। मैंने ऐसे उत्तर देखे जो मॉड्यूल ए के लिए घोषणा फाइल बनाने का सुझाव देते हैं, लेकिन मैं इससे बचना चाहता हूं क्योंकि वीएस कोड पहले से ही घोषणाओं को "जानता है" क्योंकि यह जेएस मॉड्यूल को दूसरे जेएस मॉड्यूल में आयात करते समय काम कर रहा है। पर्यावरण नोडज है।

उदाहरण:

// A.js
export const some_variable = 1

// B.js
import * as A from 'A.js'
A.some_variable --> autosugestion and complete works

// C.ts
import * as A from 'A.js' --> this shows warning and autocomplete not available on A.
A.some_variable --> does not throw error but autocomplete is not working

क्या घोषणा फाइलों के बिना टीएस फाइलों में जेएस मॉड्यूल आयात करने की अनुमति देने का कोई तरीका है ताकि स्वत: पूर्णता और टाइपिंग काम कर रही हो?

संपादित करें: (tsconfig.json)

{
  "compilerOptions": {
    "baseUrl": ".",
    "esModuleInterop": true,
    "lib": ["es2015"],
    "module": "commonjs",
    "noImplicitAny": false,
    "outDir": ".build",
    "paths": {
      "*": ["node_modules/*"]
    },
    "preserveConstEnums": true,
    "resolveJsonModule": true,
    "rootDir": "",
    "sourceMap": true,
    "strictNullChecks": true,
    "target": "es6",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "noImplicitUseStrict": true,
    "checkJs": true,
    "allowSyntheticDefaultImports": true,
    "declaration": true,
    "allowJs": true
  }
}
0
Gavrilo Aleksic 27 फरवरी 2020, 17:27
आपका tsconfig.json कैसा है? क्या आपने ध्वज "allowJs" सेट किया था?
 – 
ddprrt
27 फरवरी 2020, 17:32
मैंने अभी tsconfig.json जोड़ा है। मैंने allowJS जोड़ने की कोशिश की लेकिन समस्या बनी रहती है। कोड पूरी तरह से अच्छी तरह से काम करता है, संकलन में कोई त्रुटि नहीं है।
 – 
Gavrilo Aleksic
27 फरवरी 2020, 17:48

1 उत्तर

आप ऐसा नहीं कर सकते कि टाइपस्क्रिप्ट में जेएस मॉड्यूल आयात करने के लिए आपको इसके लिए टाइपिंग जोड़ने की जरूरत है, कृपया इसे पढ़ें: https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-d-ts.html

0
Slim Coder 27 फरवरी 2020, 17:35
मैंने इसे पढ़ा है और मुझे पता है कि डिक्लेरेशन फाइलें कैसे काम करती हैं, यह मेरे लिए अजीब है कि .js मॉड्यूल को दूसरे .js मॉड्यूल में इंपोर्ट करते समय, डिक्लेरेशन को डिक्लेरेशन फाइल के बिना जाना जाता है, लेकिन .js मॉड्यूल को .ts फाइल में इंपोर्ट करने से ऑटोकंप्लीट और IntelliSense को इनेबल कर दिया जाता है। वी.एस. कोड
 – 
Gavrilo Aleksic
27 फरवरी 2020, 17:46
यह आपकी tsconfig फ़ाइल के कारण है, आपको इसे अपडेट करना चाहिए, फिर यह जेएस फ़ाइल भी आयात करेगा।
 – 
Slim Coder
27 फरवरी 2020, 17:48
आप किस सेटिंग का जिक्र कर रहे हैं?
 – 
Gavrilo Aleksic
27 फरवरी 2020, 17:53
{allowjs:true} आपके tsconfig में।
 – 
Slim Coder
27 फरवरी 2020, 21:10
{"compilerOptions": {"target": "es5", "module": "es6"}} इसे आजमाएं।
 – 
Slim Coder
28 फरवरी 2020, 11:11