Skip to content

tsconfig विकल्प समझाए गए

वे tsconfig विकल्प जो असल में मायने रखते हैं, काम के हिसाब से ग्रुप की गई: टाइप-चेकिंग कसना, भाषा का टारगेट और मॉड्यूल सेट करना, क्या emit होता है उसे कंट्रोल करना, import पाथ मैप करना, मल्टी-प्रोजेक्ट बिल्ड संभालना, और बाकी चेक ट्यून करना।

tsconfig कंपाइलर को बताता है कि कौन सी फ़ाइलें शामिल करनी हैं और कितना सख़्त रहना है। दो विकल्प ज़्यादातर काम करते हैं: target JavaScript जनरेशन का लेवल सेट करता है, और strict सेफ़्टी चेक को एक बंडल के रूप में चालू करता है। नीचे के विकल्प वे हैं जो व्यवहार बदलते हैं; डिफ़ॉल्ट में चालू फ़्लैग चिह्नित हैं। अपनी कॉन्फ़िग किसी बेस से बनाइए, फिर सिर्फ़ अलग होने वाली चीज़ें ओवरराइड कीजिए।

रेफ़रेंस टेबल · 55 प्रविष्टियाँ
55 of 55 rows
सख़्ती
मास्टर स्विच: strictNullChecks, noImplicitAny और कई अन्य को एक साथ चालू करता है।
जिन पैरामीटर और वेरिएबल का टाइप infer नहीं हो पाता उन पर एरर (वरना वे any होते)।
null और undefined अब हर टाइप को असाइन नहीं हो सकते; इन्हें साफ़ तौर पर चुनना पड़ता है।
फ़ंक्शन पैरामीटर contravariant तरीके से चेक होते हैं; अनसाउंड कॉलबैक पैरामीटर टाइप पकड़ता है।
bind, call और apply को फ़ंक्शन के डिक्लेयर्ड पैरामीटर के मुकाबले टाइप-चेक करता है।
एरर जब क्लास प्रॉपर्टी का कोई शुरुआती मान न हो और कंस्ट्रक्टर में असाइन भी न हो।
ऑप्शनल प्रॉपर्टी { p?: T } अब साफ़ तौर पर undefined असाइनमेंट स्वीकार नहीं करती।
base-class मेंबर को ढकने वाले मेंबर पर override कीवर्ड ज़रूरी है।
घोषित लोकल वेरिएबल जो कभी पढ़े नहीं जाते, उन पर एरर।
घोषित फ़ंक्शन पैरामीटर जो कभी पढ़े नहीं जाते, उन पर एरर।
बिना असर वाले एक्सप्रेशन स्टेटमेंट पर एरर।
index-signature कीज़ के लिए डॉट ऐक्सेस मना है; ब्रैकिट इस्तेमाल करें (obj["key"])।
एरर जब एक कोड पाथ वैल्यू लौटाए पर दूसरा न लौटाए।
एरर जब switch का कोई case बिना break के अगले case में गिर जाए।
भाषा और मॉड्यूल
JavaScript जनरेशन का लेवल (जैसे ES2022); नए टारगेट पर कम डाउनलेवलिंग होती है।
उपलब्ध built-in API (जैसे ES2022, DOM, DOM.Iterable)।
जो मॉड्यूल सिस्टम emit होता है (जैसे ESNext, CommonJS, NodeNext)।
Node के असली नियम लागू करता है: हर फ़ाइल सबसे नज़दीकी package.json से CJS या ESM चुनती है, और relative import में फ़ाइल एक्सटेंशन चाहिए।
import पाथ कैसे रिज़ॉल्व होते हैं (जैसे bundler, node, nodenext)।
फ़ाइल मॉड्यूल कैसे मानी जाती है: auto (import/export के होने से), legacy, या force (हमेशा)।
CommonJS मॉड्यूल से default-import स्टाइल की इजाज़त (ज़्यादातर सेटअप में डिफ़ॉल्ट true)।
सिर्फ़ नाम वाली वैल्यू export करने वाले मॉड्यूल से default import की इजाज़त (सिर्फ़ टाइप लेवल पर)।
import जैसे लिखे गए हैं वैसे ही emit होते हैं; टाइप-ओनली import में import type ज़रूरी है (TS 5)।
import को .json फ़ाइलों को टाइप्ड वैल्यू की तरह लोड करने देता है।
.js फ़ाइलों को कंपाइलेशन के इनपुट में शामिल करता है।
.js फ़ाइलों का भी टाइप-चेक करता है और उनके JSDoc कमेंट पढ़ता है; इसमें allowJs शामिल हो जाता है।
.tsx कैसे कंपाइल होता है: react-jsx (ऑटोमैटिक रनटाइम), react (React.createElement), या preserve।
ऑटो-इन्क्लूड होने वाले @types पैकेज इस लिस्ट तक सीमित; खाली ऐरे कुछ भी शामिल नहीं करता।
@types पैकेज के लिए स्कैन होने वाले फ़ोल्डर, ट्री के ऊपर तक हर node_modules/@types की जगह।
हर फ़ाइल का अलग से ट्रांसपाइल होना सुनिश्चित करता है (बंडलर और esbuild की ज़रूरत)।
Emit
कंपाइल्ड JavaScript कहाँ लिखा जाता है।
सोर्स फ़ाइलों की जड़; आउटपुट ट्री का आकार स्थिर रखती है।
.js.map फ़ाइलें emit करता है ताकि डीबगर TypeScript पर वापस मैप कर सकें।
सोर्स मैप को .js.map फ़ाइल की जगह .js फ़ाइल के अंदर कमेंट की तरह एम्बेड करता है।
.d.ts टाइप डिक्लेरेशन emit करता है (लाइब्रेरी के लिए ज़रूरी)।
.d.ts.map फ़ाइलें emit करता है ताकि एडिटर डिक्लेरेशन से TypeScript सोर्स पर वापस कूद सकें।
सिर्फ़ .d.ts फ़ाइलें emit करता है; JavaScript बंडलर पर छोड़ दिया जाता है (declaration या composite ज़रूरी)।
__rest जैसे हेल्पर हर फ़ाइल में डालने की जगह tslib से दोबारा इस्तेमाल करता है।
टारगेट ES2015 से पुराना होने पर iterable पर for..of, spread और डिस्ट्रक्चरिंग ठीक करता है।
emit होने वाले JavaScript से कमेंट हटा देता है।
सिर्फ़ टाइप-चेक; कोई फ़ाइल नहीं लिखी जाती (जब बंडलर emit का काम करता है)।
पाथ
नॉन-रिलेटिव मॉड्यूल रिज़ॉल्यूशन के लिए बेस डायरेक्टरी।
import प्रीफ़िक्स को जगहों से मैप करता है, जैसे { "@/*": ["src/*"] }।
कई डायरेक्टरी को रिज़ॉल्यूशन के लिए एक वर्चुअल रूट की तरह गिनता है।
प्रोजेक्ट संरचना
प्रोजेक्ट को प्रोजेक्ट रेफ़रेंस के लिए बिल्डेबल मार्क करता है (declaration, incremental चालू करता है)।
तेज़ और अलग-अलग बिल्ड के लिए दूसरे tsconfig प्रोजेक्ट पर निर्भर करता है।
बिल्ड जानकारी सेव करता है ताकि अगली बार न बदली फ़ाइलें दोबारा चेक न हों।
अन्य चेक
रफ़्तार के लिए .d.ts फ़ाइलों का टाइप-चेक छोड़ देता है (डिफ़ॉल्ट true)।
एरर जब import की केसिंग फ़ाइल के असली नाम से न मिले।
ऐरे और इंडेक्स ऐक्सेस T | undefined लौटाता है, T नहीं।
क्लास फ़ील्ड सादे असाइनमेंट की जगह Object.defineProperty से बनते हैं (ES2022+ टारगेट पर डिफ़ॉल्ट true)।
पुराने फ़्रेमवर्क जो legacy डेकोरेटर सिंटैक्स चाहते हैं, उसके लिए उसे चालू करता है (प्री-स्टैंडर्ड)।
एरर मैसेज में लंबे टाइप नाम काटने की जगह पूरे दिखाता है।
एरर जब बेयर साइड-इफ़ेक्ट import (import "./x.css") कुछ भी रिज़ॉल्व न हो।
.ts पर ख़त्म होने वाले import पाथ की इजाज़त देता है (noEmit या emitDeclarationOnly ज़रूरी)।