js 'प्रकार' का उपयोग केवल .ts फ़ाइल में किया जा सकता है - विज़ुअल स्टूडियो कोड @ ts-check का उपयोग करके


104

मैं एक नोड परियोजना में टाइपस्क्रिप्ट का उपयोग करना शुरू कर रहा हूं जो मैं विज़ुअल स्टूडियो कोड में काम कर रहा हूं। मैं फ्लो के समान "ऑप्ट-इन" रणनीति का पालन करना चाहता था। इसलिए मैं उस फ़ाइल के लिए TS को सक्षम करने की उम्मीद में // @ts-checkअपनी .jsफ़ाइल के शीर्ष पर रखता हूं । अंततः मैं फ्लो के रूप में "लाइनिंग" का एक ही अनुभव चाहता हूं, इसलिए मैंने प्लगइन TSLint को स्थापित किया ताकि मैं Intellisense चेतावनियों / त्रुटियों को देख सकूं

लेकिन मेरी फ़ाइल जैसी दिख रही है:

// @ts-check

module.exports = {
  someMethod: (param: string): string => {
    return param;
  },
};

और मेरी tsconfig.jsonफ़ाइल जैसी दिख रही है ...

{
  "compilerOptions": {
      "target": "es2016",
      "module": "commonjs",
      "allowJs": true
  }
}

मुझे यह त्रुटि मिलती है: [js] 'types' can only be used in a .ts file.जैसा कि नीचे चित्र में दिखाया गया है।

ts के लिए vscode से त्रुटि

मैंने इस प्रश्न को देखा जिसने vscode में जावास्क्रिप्ट सत्यापन को अक्षम करने की सिफारिश की थी लेकिन फिर मुझे कोई टाइपस्क्रिप्ट Intellisense जानकारी नहीं दिखाती है ।

मैं स्थापित करने की कोशिश की tslint.jsEnableकरने के लिए trueके रूप में TSLint विस्तार डॉक्स में उल्लेख किया है, लेकिन कोई किस्मत मेरे vscode सेटिंग में।

.jsटाइपस्क्रिप्ट के साथ फ़ाइलों का उपयोग करने और Intellisense प्राप्त करने के लिए सही सेटअप क्या है, इसलिए मुझे पता है कि किसी भी TS कमांड को चलाने से पहले मेरे कोड में क्या त्रुटियां हैं?


क्या आपके पास कोई त्रुटि है यदि आप एक्सटेंशन को ts में बदलते हैं?
इज़राइल जिंक

@ israel.zinc .tsटीएस त्रुटियों / चेतावनियों को उम्मीद के मुताबिक दिखाने के लिए विस्तार को बदल रहा है। मुझे लगता है कि यह काम कर सकता था, लेकिन मैं का उपयोग कर चयन प्रणाली के और अधिक के लिए उम्मीद की गई थी @ts-checkके रूप में मेरे सभी एक्सटेंशन रखते हुए.js
जेम्स


@ BuZZ-dEE यह हो सकता है, लेकिन वहां के जवाब से समस्या हल नहीं हुई। मैंने अपने मूल प्रश्न में इसका उल्लेख किया है।
जेम्स

जवाबों:


203

मैं vscode के साथ @flow का उपयोग कर रहा हूं, लेकिन एक ही समस्या थी।

मैंने इसे इस चरण के साथ हल किया है:

  1. एक्सटेंशन फ़्लो लैंग्वेज सपोर्ट स्थापित करें
  2. अंतर्निहित टाइपस्क्रिप्ट एक्सटेंशन को अक्षम करें:

अंतर्निहित टाइपस्क्रिप्ट को अक्षम कैसे करें:

  1. करने के लिए जाना एक्सटेंशन टैब
  2. @builtin टाइपस्क्रिप्ट और जावास्क्रिप्ट भाषा सुविधाओं के लिए खोज
  3. अक्षम पर क्लिक करें

5
स्वीकृत उत्तर हमेशा सही नहीं होता है। प्रतिक्रियाशील मूल और प्रवाह के साथ VSCode में एक बग है जो .js फ़ाइलों में एक ही संदेश देता है, और उस स्थिति में आप .ts को नहीं बदलते हैं, लेकिन .js के साथ जारी रखें और समस्या को ठीक करें जैसा कि यहाँ सुझाया गया है !!
pashute

105
सिर्फ एक FYI करें: इस एक्सटेंशन को अक्षम करना मूल रूप से VSCode के साथ JS विकास के बारे में सभी अच्छी बातों को स्पष्ट करता है। इसके बजाय, आपको बस अपनी सेटिंग्स json फाइल में निम्नलिखित जोड़ना चाहिए: "javascript.validate.enable": false
heez

1
जैसा कि @heez ने उल्लेख किया है कि यह प्रभावित करेगा, जावास्क्रिप्ट फ़ाइलों के संदर्भ में, स्वतः पूर्णता आदि जावास्क्रिप्ट भाषा सुविधाओं को अक्षम न करें।
अजीतसेन

2
वैध उत्तर @heez द्वारा कहा गया था
असीम ओल्मेज़

1
@ हाय बचाओ के लिए धन्यवाद, मुझे पता चला। अब कोई त्रुटि नहीं। आखिरकार विजुअल स्टूडियो कोड का उपयोग कर सकते हैं।
अनीश आर्य

94

"javascript.validate.enable": falseअपने VS कोड सेटिंग्स में उपयोग करें , यह ESLINT को अक्षम नहीं करता है। मैं ESLINT और Flow दोनों का उपयोग करता हूं। बस बनाम कोड सेटअप के लिए निर्देशों का पालन करें

सेटिंग्स में इस लाइन को जोड़ना। Json। मदद करता है "javascript.validate.enable": false


4
इसके साथ आपको टाइपस्क्रिप्ट को अक्षम नहीं करना है। दोनों मौजूद हो सकते हैं। सबसे अच्छा उपाय!
नटर्स

2
यदि आप अपने जावास्क्रिप्ट को मान्य करने के लिए ESLint का उपयोग कर रहे हैं, तो यह उत्तर सबसे अच्छा समाधान है। अधिक जानकारी: code.visualstudio.com/docs/languages/… और भी github.com/flowtype/flow-for-vscode#setup
Beau Smith

1
मुझे सेटिंग कहां मिल सकती है। जेसन फ़ाइल।
i18n

1
Hi @ i18n पर जाएं: कोड -> प्राथमिकताएं -> सेटिंग्स -> एक्सटेंशन -> नीचे स्क्रॉल करें और "सेटिंग में संपादित करें ।json" खोजें। वास्तव में इसके तहत एक खोजें: Include Languages Enable Emmet abbreviations in languages that are not supported by default. Add a mapping here between the language and emmet supported language. E.g.: {"vue-html": "html", "javascript": "javascriptreact"}सेटिंग्स में संपादित करें पर क्लिक करें "javascript.validate.enable": false। इसे जोड़ें और इसे जोड़ें :।
फोटीस सकिरिस

मेरे लिए सबसे अच्छा ..
आतिशबाज़ी

1

आपको एक .tsफ़ाइल का उपयोग करना होगा - जैसे test.tsकि टाइपस्क्रिप्ट वेरिफिकेशन , वेरिएल्स का इंटेलीजेंस typing, रिटर्न टाइप्स, साथ ही "टाइप" एरर चेकिंग (जैसे stringकि एक numberपरमपाव निकलने की उम्मीद करने वाली विधि पास करना)।

इसे (मानक) के .js माध्यम सेtsc स्थानांतरित किया जाएगा ।


अपडेट (11/2018):

डाउन-वोट, बहुत उपयोगी टिप्पणियों और अन्य उत्तरों के आधार पर स्पष्टीकरण की आवश्यकता है।

types

  • हाँ, आप कर सकते हैं typeमें वी.एस. संहिता में जाँच .jsके साथ फ़ाइलें @ts-check- के रूप में एनीमेशन में दिखाया गया है

  • मैं मूल रूप से टाइपस्क्रिप्ट के लिए जिसtypes चीज का जिक्र कर रहा था, वह कुछ इस तरह की है, .tsजिसमें समान बात नहीं है:

    hello-world.ts

    function hello(str: string): string {
      return 1;
    }
    
    function foo(str:string):void{
       console.log(str);
    }

    यह संकलन नहीं होगा। Error: Type "1" is not assignable to String

  • यदि आपने इस वाक्य रचना को जावास्क्रिप्ट hello-world.js फ़ाइल में आज़माया है :

    //@ts-check
    
    function hello(str: string): string {
      return 1;
    }
    
    function foo(str:string):void{
       console.log(str);
    }

    ओपी द्वारा संदर्भित त्रुटि संदेश दिखाया गया है: [js] 'types' can only be used in a .ts file

अगर वहाँ कुछ है जो मुझे याद है कि यह ओपी के संदर्भ को भी शामिल करता है, तो कृपया जोड़ें। चलो सब सीखते हैं।


मुझे कुछ लेख मिले हैं जो सुझाव देते हैं कि आप एक जेएस फ़ाइल के भीतर टीएस की सभी विशेषताओं का उपयोग कर सकते हैं। यहाँ स्मैशिंग मैगज़ीन से एक है, vscode के लिए एक GitHub मुद्दा जो सेटअप का वर्णन करता है, और कुछ विमोचन नोट्स vscode के लिए
james

@ jamez14 मैंने कोशिश नहीं की है / उपयोग नहीं करने की आवश्यकता थी .ts। IINM, नमूने दिखाने त्रुटि जाँच और IntelliSense । मुद्दा आप (स्थिर) है typeअपने चर ing, और बदले typesके रूप में अच्छी तरह से - जैसे foo:string, bar:number, fubar:MyClass, myMethod(f:Array):void, anotherMethod():string
एचटीटी

हाँ, ऐसा लगता है जैसे आप अपने मूल्यांकन के साथ सही हैं। उदाहरणों को अधिक देखने के बाद, मैं देख रहा हूं कि यह केवल जेएस त्रुटि जांच है, टीएस नहीं, @ts-checkविशेषता का उपयोग करते समय । बहुत भ्रामक ...
जेम्स

-1

किसी के लिए भी, जो यहां उतरता है और अन्य सभी समाधानों ने काम नहीं किया है। मैं टाइपस्क्रिप्ट + प्रतिक्रिया का उपयोग कर रहा हूं और मेरी समस्या यह थी कि मैं फाइल को vscode में शामिल कर रहा था, इसलिए निम्न प्रविष्टियों के लिए अपनी सेटिंग्स की जांच javascriptreacttypescriptreactकरें।

   "files.associations": {
    "*.tsx": "typescriptreact",
    "*.ts": "typescriptreact"
  },
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.