TypeScriptAdvanced
tsconfig.json গভীরে (Compiler Options)
strict flags, target, module, outDir, rootDir, lib, paths ও module resolution — tsconfig-এর পূর্ণ ব্যবহার বাংলায়।
14টি অংশবাংলা ভাষায়
tsconfig.json-ই TypeScript-এর আচরণ নিয়ন্ত্রণ করে। installment-এর অধ্যায়ে basics দেখেছেন — এবার গুরুত্বপূর্ণ optionগুলো বিস্তারে।
strict একসাথে কী কী চালু করে
| Flag | অর্থ |
|---|---|
| strictNullChecks | null/undefined আলাদা টাইপ হিসেবে গণ্য |
| noImplicitAny | implicit any-তে error |
| strictFunctionTypes | function variance কঠোর |
| noUncheckedIndexedAccess | index access-এ | undefined |
| useUnknownInCatchVariables | catch এর error: unknown |
| exactOptionalPropertyTypes | optional-এ undefined ঠিক রাখা |
target ও module
tsconfig.jsonjson
json
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "nodenext",
"lib": ["ES2022", "DOM", "DOM.Iterable"]
}
}outDir ও rootDir
{
"compilerOptions": {
"rootDir": "./src",
"outDir": "./dist",
"sourceMap": true,
"declaration": true,
"removeComments": true
},
"include": ["src"]
}lib ও type environment
lib বলে দেয় কোন runtime-এর global type জানা দরকার — ব্রাউজার হলে DOM, Node হলে ES2023+ নাইট। Node global-এর জন্য @types/node দরকার।
paths (Alias)
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
"@components/*": ["src/components/*"]
}
}
}Module resolution
// Node-অনুযায়ী বিকল্প
"moduleResolution": "bundler" // Vite/Next.js ইত্যাদির জন্য
"moduleResolution": "nodenext" // Node.js ESM
"moduleResolution": "node" // (legacy)সবচেয়ে সরল নিয়ম
নতুন প্রজেক্টে strict: true থেকে শুরু করুন। tsc --init রান করে সেখান থেকে নিজের প্রয়োজনে edit করুন — বেশিরভাগ প্রজেক্টে অল্প option-ই যথেষ্ট।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।