Node.js 12 पर चलने वाले कोड को आउटपुट करने के लिए इष्टतम टाइपस्क्रिप्ट tsconfig सेटिंग्स क्या हैं?

82
Linus Unnebäck 17 जिंदा 2020, 15:42

3 जवाब

सबसे बढ़िया उत्तर

Node.js 12.0.0 के अनुसार, ES2019 का 100% समर्थित है। यदि आप जानते हैं कि आप उस संस्करण या नए को लक्षित कर रहे हैं, तो इष्टतम कॉन्फ़िगरेशन इस तरह दिखेगा:

  • "module": "commonjs"

    Node.js ES-मॉड्यूल जोड़ने की राह पर है, लेकिन अभी के लिए हमें CommonJS के साथ रहना होगा।

  • "target": "es2019"

    यह टाइपस्क्रिप्ट को बताता है कि ES2019 की सुविधाओं के साथ JavaScript वाक्यविन्यास को आउटपुट करना ठीक है। व्यवहार में, इसका मतलब है कि यह उदा। पॉलीफ़िल को एम्बेड करने के बजाय आउटपुट ऑब्जेक्ट रेस्ट/स्प्रेड प्रॉपर्टीज़ और एसिंक्स/वेट सिंटैक्स।

  • "lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]

    यह टाइपस्क्रिप्ट को बताता है कि ES2019 या इससे पहले पेश किए गए फ़ंक्शंस और प्रॉपर्टीज़ का उपयोग करना ठीक है। व्यवहार में, इसका मतलब है कि आप उपयोग कर सकते हैं उदा। String.prototype.trimStart और Array.prototype.flat

    ES2019 के अलावा, Node.js 12 ES2020 से BigInt और matchAll का भी समर्थन करता है, इसलिए हम ES2020 से अतिरिक्त परिभाषाएँ शामिल करते हैं।

इस प्रकार पूर्ण विन्यास होगा:

{
  "compilerOptions": {
    "lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"],
    "module": "commonjs",
    "target": "es2019"
  }
}

यदि आप Node.js 12.9.0 या नए को लक्षित कर रहे हैं, तो आप केवल "lib": ["es2020"] निर्दिष्ट कर सकते हैं क्योंकि वह संस्करण ES2020 में पेश किए गए सभी नए कार्यों और गुणों का समर्थन करता है। . हालांकि यह नए जावास्क्रिप्ट वाक्यविन्यास का समर्थन नहीं करता है, इसलिए आपको अभी भी "target": "es2019" पर बने रहना होगा।

इस प्रकार पूर्ण विन्यास होगा:

{
  "compilerOptions": {
    "lib": ["es2020"],
    "module": "commonjs",
    "target": "es2019"
  }
}

यदि आप Node.js 16 चला रहे हैं तो आप मेरा नोड.js 16 के समान उत्तर यहां देख सकते हैं।

यदि आप Node.js 14 चला रहे हैं तो आप मेरा नोड.जेएस 14 के समान उत्तर यहां देख सकते हैं।

यदि आप Node.js 10 चला रहे हैं, तो आप मेरा नोड.js 10 के समान उत्तर यहां देख सकते हैं।

यदि आप Node.js 8 चला रहे हैं, तो आप मेरा नोड.js 8 के समान उत्तर यहां देख सकते हैं।

214
Linus Unnebäck 3 मई 2021, 18:41
1
इसमें es2020.promise भी है। वहाँ अब जो समर्थित है नोड 12.10.0 से शुरू।
 – 
Ivan Yarych
26 फरवरी 2020, 19:11
2
मेरे उत्तर के निचले हिस्से में Node.js>= 12.9.0 के लिए एक अनुभाग है जिसमें es2020 जिसमें बदले में es2020.promise शामिल है
 – 
Linus Unnebäck
27 फरवरी 2020, 00:14
1
इनके लिए धन्यवाद, वे ताज़गी से सीधे आगे हैं। मुझे अच्छा लगा कि आप आगे बढ़े और Node 14 के लिए भी एक किया। जहाँ तक इसके लिए "उद्धरण" की बात है, क्या टाइपस्क्रिप्ट प्रोजेक्ट नोड के दिए गए संस्करण के लिए इन विशिष्ट लक्ष्य और lib मानों को प्रकाशित करता है?
 – 
IAmKale
20 मई 2020, 09:09
3
उस तरह के शब्दों के लिए आपका धन्यवाद! टाइपस्क्रिप्ट उस जानकारी को प्रकाशित नहीं करता है, इसके बजाय मैंने ज्यादातर नोड.ग्रीन, कुछ परीक्षण स्वयं, और टाइपस्क्रिप्ट दस्तावेज़ीकरण पर उत्तर आधारित हैं
 – 
Linus Unnebäck
20 मई 2020, 11:34
2
हम्म, यह दुर्भाग्यपूर्ण है। टाइपस्क्रिप्ट को यह बताने का कोई तरीका प्रतीत नहीं होता है कि नलिश कोलेसिंग समर्थित नहीं है, जबकि BigInt शाब्दिक हैं। यदि आप ES2020 पर लक्ष्य निर्धारित करते हैं तो टाइपस्क्रिप्ट ?? उत्सर्जित करेगा जो Node द्वारा समर्थित नहीं है... यदि संभव हो, तो मैं आपको Node.js 14 में अपग्रेड करने की सलाह दूंगा जो पूर्ण ES2020 लक्ष्य का समर्थन करता है।
 – 
Linus Unnebäck
10 जून 2020, 12:02

tsconfig bases का उपयोग करना बहुत आसान है।

npm install --save-dev @tsconfig/node12 चलाएं और फिर tsconfig.json में

{
  "extends": "@tsconfig/node12/tsconfig.json",
  // ...your configrations
}

विभिन्न वातावरणों के लिए कुछ tsconfig आधार हैं और समुदाय और जोड़ता रहता है।

1
theJian 6 सितंबर 2021, 12:34

टीएल: डीआर

टाइपस्क्रिप्ट नोड संस्करण के अनुरूप लक्ष्य, मॉड्यूल और लिब का मानचित्रण रखता है। आप इसे यहां देख सकते हैं https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping

23
Pang 27 जिंदा 2021, 03:52