TypeScript কম্পাইলার (যাকে tsc বলা হয়) বিভিন্ন কম্পাইলার অপশন প্রদান করে, যা TypeScript কোডের কম্পাইলেশন প্রক্রিয়াকে কাস্টমাইজ এবং কন্ট্রোল করতে সাহায্য করে। এই অপশনগুলো আপনাকে কোডের আউটপুট ফাইল, টাইপ চেকিং, প্যাকেজ ম্যানেজমেন্ট, এবং আরও অনেক কিছু কনফিগার করতে দেয়। TypeScript কম্পাইলার অপশনগুলো সাধারাণত tsconfig.json ফাইলে সংজ্ঞায়িত করা হয়, যা TypeScript প্রজেক্টের কনফিগারেশন ফাইল হিসেবে কাজ করে।
১. tsconfig.json ফাইল
TypeScript প্রজেক্টের মূল কনফিগারেশন ফাইল tsconfig.json। এই ফাইলে আপনি প্রজেক্টের সমস্ত কম্পাইলার অপশন এবং অন্যান্য কনফিগারেশন সেট করতে পারেন।
উদাহরণ: tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"outDir": "./dist",
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": [
"src/**/*.ts"
]
}
এখানে:
compilerOptions: সমস্ত কম্পাইলার অপশন যেখানে আপনি টাইপ চেকিং, আউটপুট ফাইল ডিরেক্টরি, এবং অন্যান্য কনফিগারেশন সেট করেন।include: কোড ফাইলগুলো কোন ডিরেক্টরি বা প্যাটার্নের মধ্যে থাকবে তা নির্দেশ করে।
২. প্রধান TypeScript Compiler Options
নিচে কিছু গুরুত্বপূর্ণ compilerOptions তুলে ধরা হলো, যেগুলো সাধারণভাবে TypeScript প্রজেক্টে ব্যবহৃত হয়:
২.১. target
target অপশনটি আপনাকে TypeScript কোডটি কোন JavaScript সংস্করণে কম্পাইল হবে তা নির্ধারণ করতে সাহায্য করে। এটি সাধারণত es5, es6 বা তার পরবর্তী সংস্করণের মধ্যে হতে পারে।
"target": "es6"
এখানে:
- TypeScript কোডটি ECMAScript 6 (ES6) সংস্করণে কম্পাইল হবে।
২.২. module
module অপশনটি TypeScript কোডের মডিউল সিস্টেম নির্ধারণ করে। সাধারণত commonjs, es6, বা amd ব্যবহৃত হয়।
"module": "commonjs"
এখানে:
- কোডটি
commonjsমডিউল সিস্টেমে কম্পাইল হবে, যা Node.js এর জন্য উপযুক্ত।
২.৩. strict
strict অপশনটি TypeScript টাইপ চেকিং মোড সক্রিয় করে, যা কোডে আরও কঠোর টাইপ চেকিং প্রয়োগ করে। এটি সবকটি কঠোর চেকিং ফিচার সক্রিয় করে যেমন noImplicitAny, strictNullChecks ইত্যাদি।
"strict": true
এখানে:
- কঠোর টাইপ চেকিং চালু করা হচ্ছে।
২.৪. outDir
outDir অপশনটি TypeScript কম্পাইলারকে নির্দেশ দেয় যে, কম্পাইল হওয়া .js ফাইলগুলো কোথায় সংরক্ষণ করতে হবে।
"outDir": "./dist"
এখানে:
.tsফাইলগুলি কম্পাইল হয়েdistফোল্ডারে.jsফাইলগুলো রূপান্তরিত হবে।
২.৫. esModuleInterop
esModuleInterop অপশনটি ECMAScript মডিউল এবং CommonJS মডিউল এর মধ্যে ইন্টারঅপারাবিলিটি (সহযোগিতা) সক্রিয় করে। এটি সাধারণত মডিউল ইম্পোর্টের ক্ষেত্রে সঠিক আচরণ নিশ্চিত করে।
"esModuleInterop": true
এখানে:
- এটি
importএবংrequireএর মধ্যে সঠিক ইন্টারঅপারাবিলিটি নিশ্চিত করবে।
২.৬. skipLibCheck
skipLibCheck অপশনটি টার্গেট ফাইলগুলির লাইব্রেরি টাইপ চেকিং অক্ষম করে। এটি বড় প্রজেক্টে টাইপ চেকিং দ্রুত করতে সাহায্য করে।
"skipLibCheck": true
এখানে:
- লাইব্রেরি ফাইলগুলোর টাইপ চেকিং স্কিপ হবে।
২.৭. forceConsistentCasingInFileNames
এই অপশনটি ফাইল নামের ক্ষেত্রে বড় এবং ছোট হাতের অক্ষরের মধ্যে সঙ্গতি বজায় রাখে। এটি বিভিন্ন প্ল্যাটফর্মে (যেমন Windows এবং Linux) ফাইল নামের ক্ষেত্রে সমস্যা এড়াতে সাহায্য করে।
"forceConsistentCasingInFileNames": true
এখানে:
- ফাইল নামের ক্ষেত্রে বড়-ছোট হাতের অক্ষরের সঙ্গতি বজায় থাকবে।
২.৮. noImplicitAny
noImplicitAny অপশনটি TypeScript কম্পাইলারকে নির্দেশ দেয় যে, যেকোনও ভ্যারিয়েবলের টাইপ যদি অপ্রকাশিত (অবশ্যই টাইপ সন্নিবেশিত না থাকে), তবে এটি any টাইপ হিসেবে গণ্য হবে এবং ত্রুটি উৎপন্ন হবে।
"noImplicitAny": true
এখানে:
- যদি কোনও ভ্যারিয়েবল টাইপ নির্ধারণ না করা হয়, তাহলে TypeScript একটি ত্রুটি উৎপন্ন করবে।
২.৯. allowJs
allowJs অপশনটি TypeScript কম্পাইলারকে JavaScript ফাইলগুলি ইনপুট হিসেবে গ্রহণ করতে অনুমতি দেয়। এটি তখন ব্যবহৃত হয় যখন আপনি TypeScript এবং JavaScript একই প্রজেক্টে মিশিয়ে ব্যবহার করতে চান।
"allowJs": true
এখানে:
- JavaScript ফাইলগুলো TypeScript প্রজেক্টে অন্তর্ভুক্ত করা যাবে।
৩. tsconfig.json এ অন্যান্য অপশন
এছাড়াও আরও অনেক কম্পাইলার অপশন রয়েছে যা TypeScript কোডের আচরণ কাস্টমাইজ করতে সহায়ক হতে পারে:
- noEmit: শুধুমাত্র টাইপ চেকিং করবে, তবে আউটপুট ফাইল তৈরি করবে না।
- noUnusedLocals: অব্যবহৃত লোকাল ভ্যারিয়েবলগুলোর জন্য ত্রুটি দেখাবে।
- noUnusedParameters: অব্যবহৃত ফাংশন প্যারামিটারগুলোর জন্য ত্রুটি দেখাবে।
- lib: কোন ECMAScript বা DOM লাইব্রেরি ব্যবহার করতে চান তা নির্ধারণ করবে।
৪. TypeScript কম্পাইলেশন চালানো
যখন আপনি tsconfig.json ফাইল তৈরি করেন, তখন কম্পাইলেশন চালানোর জন্য tsc কমান্ড ব্যবহার করতে পারবেন। এটি TypeScript প্রজেক্টের সকল .ts ফাইলগুলো কম্পাইল করে নির্ধারিত আউটপুট ডিরেক্টরিতে .js ফাইলে রূপান্তরিত করবে।
tsc
এটি tsconfig.json ফাইলের কনফিগারেশন অনুসারে TypeScript কোড কম্পাইল করবে।
সারাংশ
TypeScript কম্পাইলার অপশনগুলো আপনাকে TypeScript প্রজেক্ট কাস্টমাইজ করতে সাহায্য করে। tsconfig.json ফাইলে আপনি বিভিন্ন অপশন কনফিগার করতে পারেন, যেমন টাইপ চেকিং, আউটপুট ডিরেক্টরি, মডিউল সিস্টেম, এবং আরও অনেক কিছু। এর মাধ্যমে আপনার প্রজেক্টে কোডের মান বজায় রাখা এবং উন্নত ফিচার তৈরি করা সহজ হয়।
TypeScript প্রজেক্টে কোড কম্পাইল করার জন্য tsconfig.json একটি অত্যন্ত গুরুত্বপূর্ণ কনফিগারেশন ফাইল। এই ফাইলের মাধ্যমে আপনি TypeScript কম্পাইলারের আচরণ এবং কোড ট্রান্সপাইলেশন প্রক্রিয়াটি নিয়ন্ত্রণ করতে পারেন। এটি মূলত প্রজেক্টের রুট ডিরেক্টরিতে রাখা হয় এবং সেখানে বিভিন্ন কনফিগারেশন অপশন নির্ধারণ করা হয় যা আপনার TypeScript কোডের কম্পাইলেশন প্রক্রিয়া নিয়ন্ত্রণ করে।
১. tsconfig.json ফাইল কী?
tsconfig.json ফাইলটি একটি JSON (JavaScript Object Notation) ফাইল, যা TypeScript প্রজেক্টের কনফিগারেশন সংক্রান্ত তথ্য ধারণ করে। এতে আপনি TypeScript কম্পাইলারের বিভিন্ন সেটিংস, যেমন ইনপুট ফাইল, আউটপুট ফাইল, টাইপ চেকিং অপশন ইত্যাদি নির্ধারণ করতে পারেন।
২. tsconfig.json এর সাধারণ গঠন
একটি সাধারণ tsconfig.json ফাইল দেখতে এরকম হতে পারে:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
এখানে:
- compilerOptions: এটি প্রধান কনফিগারেশন যেখানে কম্পাইলারের বিভিন্ন সেটিংস নির্ধারণ করা হয়।
- include: এই অংশে আপনি কোন ফাইল বা ডিরেক্টরিগুলি প্রজেক্টের অন্তর্ভুক্ত হবে তা নির্ধারণ করেন।
- exclude: এখানে আপনি নির্দিষ্ট ফাইল বা ডিরেক্টরি উল্লেখ করতে পারেন যা প্রজেক্টের অংশ হবে না।
৩. মুখ্য কনফিগারেশন অপশনস
tsconfig.json ফাইলে compilerOptions এবং অন্যান্য অপশনগুলির মাধ্যমে আপনি টাইপস্ক্রিপ্ট কম্পাইলার কিভাবে কাজ করবে তা কাস্টমাইজ করতে পারেন। নিচে কিছু গুরুত্বপূর্ণ কনফিগারেশন অপশন উল্লেখ করা হলো:
১. target
এটি নির্ধারণ করে যে TypeScript কোডটি কোন জাভাস্ক্রিপ্ট সংস্করণে কম্পাইল হবে।
"target": "es6"
উদাহরণস্বরূপ, es6 এর মানে হলো TypeScript কোডটি ECMAScript 6 (ES6) ফিচারসহ কম্পাইল হবে।
২. module
এই অপশনটি নির্ধারণ করে যে আউটপুট ফাইলটি কোন মডিউল সিস্টেম ব্যবহার করবে (যেমন commonjs, amd, es6, ইত্যাদি)।
"module": "commonjs"
৩. strict
এটি টাইপস্ক্রিপ্টের সমস্ত strict চেকিং অপশনস (যেমন noImplicitAny, strictNullChecks, ইত্যাদি) সক্ষম করে।
"strict": true
৪. esModuleInterop
এই অপশনটি কম্পাইলারকে import এবং export সিনট্যাক্সের সাথে আরও ভালভাবে ইন্টারঅপেবল হতে সাহায্য করে। এটি মূলত কমনজেএস (CommonJS) মডিউল ইম্পোর্টের সময় সহায়ক।
"esModuleInterop": true
৫. skipLibCheck
এই অপশনটি লাইব্রেরি ফাইলগুলির টাইপ চেকিংকে অগ্রাহ্য করতে ব্যবহার করা হয়, যা ডিপেনডেন্সি ও টাইপ ডিফিনিশনগুলির মধ্যে কিছু ত্রুটি থেকে বাঁচাতে সাহায্য করতে পারে।
"skipLibCheck": true
৬. forceConsistentCasingInFileNames
এটি নিশ্চিত করে যে আপনার ফাইল নামের কেস (uppercase বা lowercase) সঠিক এবং কনসিস্টেন্ট থাকে।
"forceConsistentCasingInFileNames": true
৭. outDir
এই অপশনটি নির্ধারণ করে যে কম্পাইল করা কোড কোথায় সংরক্ষণ হবে।
"outDir": "./dist"
এটি সমস্ত কম্পাইলড ফাইলকে dist ডিরেক্টরিতে আউটপুট করবে।
৪. include এবং exclude অপশনস
- include: এই অপশনের মাধ্যমে আপনি নির্দিষ্ট ফাইল বা ডিরেক্টরি নির্বাচন করতে পারেন যেগুলি কম্পাইল হবে।
"include": ["src/**/*"]
এখানে "src/**/*" এর মানে হল, সমস্ত ফাইল এবং সাব-ডিরেক্টরি অন্তর্ভুক্ত হবে যা src ডিরেক্টরির মধ্যে রয়েছে।
- exclude: এখানে আপনি নির্দিষ্ট ফাইল বা ডিরেক্টরি চিহ্নিত করতে পারেন যেগুলি কম্পাইলিং থেকে বাদ দেওয়া হবে। সাধারণত
node_modulesবা অন্যান্য লাইব্রেরি ডিরেক্টরি বাদ দেওয়া হয়।
"exclude": ["node_modules"]
৫. দ্বিতীয় মানের কনফিগারেশন অপশনস
- noEmit: TypeScript কোড চেক করবে কিন্তু কোনো আউটপুট তৈরি করবে না।
- declaration:
.d.tsডিক্লারেশন ফাইল তৈরি করবে, যা অন্যদের জন্য API কনট্রাক্ট সরবরাহ করবে। - lib: TypeScript কম্পাইলার কোন লাইব্রেরি সমর্থন করবে তা নির্ধারণ করে (যেমন
["dom", "es6"])। - allowJs: JavaScript ফাইলগুলোকে TypeScript প্রজেক্টে অন্তর্ভুক্ত করবে।
- moduleResolution: কম্পাইলারটি কিভাবে মডিউল রেজলভ করবে তা নির্ধারণ করে (যেমন
nodeবাclassic)।
৬. উদাহরণ: সম্পূর্ণ tsconfig.json
এটি একটি পূর্ণ tsconfig.json এর উদাহরণ যা সাধারণ ডেভেলপমেন্ট কনফিগারেশন অন্তর্ভুক্ত করে:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist",
"declaration": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
৭. tsconfig.json কনফিগারেশন ফাইল তৈরি করা
tsconfig.json ফাইল তৈরি করার জন্য আপনি TypeScript CLI ব্যবহার করতে পারেন:
tsc --init
এটি একটি ডিফল্ট tsconfig.json ফাইল তৈরি করবে, যা আপনার প্রজেক্টে ব্যবহারের জন্য প্রস্তুত।
tsconfig.json ফাইলের সাহায্যে আপনি TypeScript প্রজেক্টের সমস্ত কনফিগারেশন সেটিংস কাস্টমাইজ করতে পারেন, যাতে আপনার কোডটি সঠিকভাবে কম্পাইল হয় এবং ডেভেলপমেন্টের সময় কোনো ধরনের সমস্যা না হয়।
TypeScript কম্পাইলার (tsc) কোডের টাইপ চেক এবং JavaScript এ রূপান্তর (transpile) করার জন্য ব্যবহৃত হয়। tsc কম্পাইলারটি অনেক অপশন প্রদান করে, যেগুলি আপনার TypeScript কোড কিভাবে কম্পাইল হবে তা নিয়ন্ত্রণ করে। কম্পাইলার অপশনগুলির মাধ্যমে আপনি টাইপ চেকিং, আউটপুট ফাইলের গঠন, টাইপ ডিফিনিশন এবং অন্যান্য গুরুত্বপূর্ণ বৈশিষ্ট্য কাস্টমাইজ করতে পারেন।
এই টিউটোরিয়ালে TypeScript কম্পাইলার অপশন এবং তাদের ব্যবহার দেখানো হবে।
১. tsconfig.json ফাইল
TypeScript প্রকল্পের জন্য কম্পাইলার অপশন কনফিগার করার প্রধান উপায় হলো tsconfig.json ফাইল ব্যবহার করা। এই ফাইলটি TypeScript প্রজেক্টের রুট ডিরেক্টরিতে থাকে এবং এতে সমস্ত কম্পাইলার অপশন এবং ফাইল ইনক্লুশন/এক্সক্লুশন নির্দেশাবলী থাকে।
উদাহরণ: tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"outDir": "./dist"
},
"include": [
"src/**/*"
]
}
এখানে:
- compilerOptions: কম্পাইলার অপশনগুলো এখানে ডিফাইন করা হয়।
- include: এই ক্ষেত্রটি নির্দিষ্ট ফাইল বা ডিরেক্টরি চিহ্নিত করে, যা কম্পাইল হবে।
২. কম্পাইলার অপশনস এবং তাদের ব্যবহার
TypeScript কম্পাইলারে বিভিন্ন ধরনের অপশন ব্যবহার করা যেতে পারে, যা আপনার প্রোজেক্টের প্রয়োজন অনুসারে কাস্টমাইজ করা যায়।
২.১. target
এই অপশনটি নির্ধারণ করে যে TypeScript কে কোন JavaScript সংস্করণে কম্পাইল করা হবে। এটি TypeScript কোডের রূপান্তরযোগ্য JavaScript ফিচারের স্তর নির্ধারণ করে।
উদাহরণ:
es5: ECMAScript 5 এর জন্য কম্পাইল করবে।es6বাes2015: ECMAScript 6 (ES6) এর জন্য।esnext: বর্তমান JavaScript ফিচারসমূহ (যেমন async/await, modules) ব্যবহার করবে।
"target": "es5"
২.২. module
এই অপশনটি নির্ধারণ করে TypeScript কে কোন মডিউল সিস্টেমে রূপান্তর করতে হবে। এটি Node.js, Browser, বা অন্যান্য প্ল্যাটফর্মের জন্য উপযোগী মডিউল সিস্টেম নির্ধারণ করতে সাহায্য করে।
উদাহরণ:
commonjs: Node.js এর জন্য।es6: ES6 মডিউল সিস্টেম (import/export)।amd,system,umd: অন্যান্য মডিউল সিস্টেম।
"module": "commonjs"
২.৩. strict
এই অপশনটি TypeScript এর কঠোর টাইপ চেকিং সক্ষম করে। যখন strict অপশনটি true সেট করা হয়, তখন TypeScript কোডে টাইপ সম্পর্কিত সুনির্দিষ্ট ত্রুটি চেক করবে, যা কোডের নিরাপত্তা এবং ডেভেলপমেন্টে সহায়ক।
উদাহরণ:
"strict": true
strict চালু হলে, TypeScript সুনির্দিষ্টভাবে নিম্নলিখিত চেকগুলি করে:
noImplicitAny: কোনো ভেরিয়েবল টাইপ অজানা থাকলে ত্রুটি দেখাবে।noImplicitThis:thisএর টাইপ চেক করবে।strictNullChecks:nullএবংundefinedএর মানের জন্য আরো কঠোর চেক প্রয়োগ করবে।
২.৪. outDir
এই অপশনটি কম্পাইল করা ফাইলগুলো কোথায় সংরক্ষণ করা হবে তা নির্ধারণ করে। সাধারণত এটি dist বা build নামক ডিরেক্টরিতে আউটপুট ফাইল সংরক্ষণ করে।
উদাহরণ:
"outDir": "./dist"
২.৫. esModuleInterop
এই অপশনটি পুরোনো CommonJS মডিউল এবং ES মডিউলগুলির মধ্যে পারস্পরিক সম্পর্ক সঠিকভাবে কাজ করার জন্য প্রয়োজনীয়। এটি সাধারণত ES মডিউলগুলোকে CommonJS স্টাইলের সাথে ইন্টিগ্রেট করতে ব্যবহৃত হয়।
উদাহরণ:
"esModuleInterop": true
২.৬. skipLibCheck
এই অপশনটি লাইব্রেরি ফাইলগুলির টাইপ চেকিং স্কিপ করতে ব্যবহৃত হয়। যদি আপনার কোডে বাইরের লাইব্রেরি বা টাইপ ডিফিনিশন থাকে, তবে এই অপশনটি তা স্কিপ করতে সাহায্য করবে।
উদাহরণ:
"skipLibCheck": true
২.৭. sourceMap
এই অপশনটি TypeScript কম্পাইল করা ফাইলগুলির সাথে .map ফাইল তৈরি করবে, যা ডিবাগিংয়ের জন্য খুবই উপকারী। .map ফাইলের মাধ্যমে আপনি সরাসরি TypeScript কোডে ব্রাউজারে ডিবাগ করতে পারবেন।
উদাহরণ:
"sourceMap": true
২.৮. noEmit
এই অপশনটি TypeScript কে শুধুমাত্র টাইপ চেক করতে বলে, কিন্তু JavaScript ফাইল বা .d.ts ফাইল তৈরি করে না। এটি বিশেষভাবে পরীক্ষণ বা শুধুমাত্র টাইপ চেকিং করার জন্য ব্যবহৃত হতে পারে।
উদাহরণ:
"noEmit": true
২.৯. allowJs
এই অপশনটি TypeScript কে JavaScript ফাইল কম্পাইল করতে অনুমতি দেয়। এটি একটি মিশ্র প্রজেক্টের জন্য উপকারী, যেখানে TypeScript এবং JavaScript ফাইল একসাথে কাজ করে।
উদাহরণ:
"allowJs": true
৩. টাইপস্ক্রিপ্ট কম্পাইলার অপশন ব্যবহার করার উদাহরণ
এখানে একটি tsconfig.json ফাইলের উদাহরণ দেয়া হলো যেখানে বিভিন্ন কম্পাইলার অপশন কনফিগার করা হয়েছে:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"outDir": "./dist",
"sourceMap": true,
"noEmit": false
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules"
]
}
এখানে:
- TypeScript কোডটি ES6 এ রূপান্তরিত হবে।
commonjsমডিউল সিস্টেম ব্যবহার করা হবে।- কঠোর টাইপ চেকিং সক্ষম করা হয়েছে (
strict: true)। - আউটপুট
distডিরেক্টরিতে সংরক্ষণ করা হবে।
৪. উপসংহার
TypeScript কম্পাইলার অপশনগুলি বিভিন্ন পদ্ধতিতে কনফিগার করা যায়, যা আপনার প্রকল্পের ধরন এবং প্রয়োজন অনুযায়ী উন্নত কাস্টমাইজেশন প্রদান করে। tsconfig.json ফাইলের মাধ্যমে আপনি TypeScript কোডের কম্পাইলেশন প্রক্রিয়া নিয়ন্ত্রণ করতে পারবেন, যা কোডের স্থিতিশীলতা, উন্নয়ন কার্যক্রম এবং ডিবাগিংকে আরো সহজ এবং কার্যকর করে তোলে।
TypeScript-এ মডিউল রেজলিউশন এবং টার্গেট সেটিংস কনফিগারেশন খুবই গুরুত্বপূর্ণ। এগুলি TypeScript কম্পাইলারকে জানান দেয় কিভাবে মডিউল এবং কোড ট্রান্সপাইল করতে হবে, এবং কোন JavaScript ভার্সনে কম্পাইল করা উচিত। এই সেটিংসগুলো tsconfig.json ফাইলে কনফিগার করা হয়।
১. মডিউল রেজলিউশন (Module Resolution)
মডিউল রেজলিউশন হচ্ছে TypeScript কম্পাইলারের প্রক্রিয়া যার মাধ্যমে এটি নির্ধারণ করে কোন ফাইল বা মডিউলটি ইম্পোর্ট করতে হবে। TypeScript দুটি মডিউল রেজলিউশন স্ট্র্যাটেজি সমর্থন করে:
- Classic (পুরানো, Node.js ভিত্তিক নয়)
- Node (Node.js ভিত্তিক, বর্তমানে ডিফল্ট)
মডিউল রেজলিউশন এর মূল উদ্দেশ্য হল, TypeScript কোডে ইম্পোর্ট করা মডিউল বা ফাইলের অবস্থান সঠিকভাবে চিহ্নিত করা।
মডিউল রেজলিউশন স্ট্র্যাটেজি নির্ধারণ
tsconfig.json ফাইলে moduleResolution অপশন ব্যবহার করে আপনি মডিউল রেজলিউশন স্ট্র্যাটেজি সেট করতে পারেন। সাধারণভাবে, Node মডিউল রেজলিউশন ব্যবহৃত হয়।
{
"compilerOptions": {
"moduleResolution": "node"
}
}
Node মডিউল রেজলিউশন স্ট্র্যাটেজি সাধারণভাবে Node.js এবং NPM প্যাকেজ ম্যানেজমেন্ট ব্যবহারকারী প্রজেক্টগুলির জন্য উপযুক্ত। এটি Node.js-এর মডিউল রেজলিউশন কৌশল অনুসরণ করে, যেখানে node_modules ফোল্ডারের মধ্যে মডিউল খোঁজা হয়।
২. টার্গেট সেটিংস (Target Settings)
টার্গেট সেটিংস নির্ধারণ করে TypeScript কম্পাইলার কোন JavaScript ভার্সনে কোড কম্পাইল করবে। TypeScript আধুনিক JavaScript (ES6, ESNext) থেকে পুরোনো JavaScript (ES5, ES3) এ কোড ট্রান্সপাইল করার ক্ষমতা রাখে।
tsconfig.json ফাইলে target অপশন ব্যবহার করে আপনি JavaScript-এর লক্ষ্য ভার্সন চিহ্নিত করতে পারেন। সাধারণভাবে, ES5 অথবা ES6 (ES2015) ব্যবহার করা হয়।
টার্গেট সেটিংস উদাহরণ
{
"compilerOptions": {
"target": "ES6"
}
}
এই কনফিগারেশন TypeScript কোডটিকে ES6 (ECMAScript 2015) এ কম্পাইল করবে। আপনি বিভিন্ন লক্ষ্য ভার্সন চিহ্নিত করতে পারেন যেমন:
- ES3 (পুরোনো ব্রাউজার সহ)
- ES5 (পুরোনো ব্রাউজার সমর্থন সহ)
- ES6/ES2015 (মর্ডান ব্রাউজার)
- ESNext (সবচেয়ে নতুন ECMAScript ফিচার)
টার্গেটের প্রভাব
- ES3: TypeScript ES3-এ ট্রান্সপাইল করলে পুরোনো ব্রাউজারগুলির জন্য কম্প্যাটিবিলিটি বাড়ানো হয়, তবে আধুনিক ফিচারগুলো পাবেন না।
- ES5: এটি অধিকাংশ পুরোনো ব্রাউজার সমর্থন করে এবং অধিকাংশ ফিচারও প্রাপ্য থাকে।
- ES6/ES2015 এবং পরবর্তী: আধুনিক ব্রাউজার এবং Node.js পরিবেশের জন্য এই টার্গেট সেরা, যেহেতু এতে নতুন ফিচার এবং পারফরম্যান্স উন্নতি থাকে।
৩. মডিউল সিস্টেম সেটিংস
মডিউল সিস্টেম সেটিংস দ্বারা TypeScript নির্ধারণ করে, মডিউলগুলো কোন ফরম্যাটে ট্রান্সপাইল হবে। এটি module অপশনের মাধ্যমে কনফিগার করা হয়।
উদাহরণ:
{
"compilerOptions": {
"module": "commonjs"
}
}
এই সেটিংসের মাধ্যমে TypeScript কম্পাইলার CommonJS মডিউল সিস্টেম ব্যবহার করে কোড ট্রান্সপাইল করবে, যা Node.js এর জন্য আদর্শ। আপনি ES6 মডিউল সিস্টেমও ব্যবহার করতে পারেন:
{
"compilerOptions": {
"module": "ES6"
}
}
এখানে ES6 মডিউল সিস্টেমে কোড কম্পাইল করার মাধ্যমে import/export সিস্টেম ব্যবহার করা হয়, যা আধুনিক JavaScript মডিউল সিস্টেম।
৪. সংক্ষেপে
- মডিউল রেজলিউশন: মডিউল কোথায় খুঁজে পাওয়া যাবে তা নির্ধারণ করে।
nodeস্ট্র্যাটেজি ব্যবহার করলে Node.js কনভেনশন অনুসরণ করা হয়। - টার্গেট সেটিংস: TypeScript কোন JavaScript ভার্সনে কোড কম্পাইল করবে তা নির্ধারণ করে, যেমন
ES5,ES6, অথবাESNext। - মডিউল সিস্টেম: মডিউলগুলো কোন ফরম্যাটে কম্পাইল হবে তা নির্ধারণ করে, যেমন
commonjsঅথবাES6।
TypeScript এর tsconfig.json ফাইলে এই অপশনগুলো কনফিগার করে আপনি আপনার প্রজেক্টের প্রয়োজন অনুযায়ী কোড কম্পাইলেশন এবং মডিউল রেজলিউশন কৌশল নিয়ন্ত্রণ করতে পারেন।
টাইপ ডেক্লারেশন ফাইল (Type Declaration Files) TypeScript-এর একটি গুরুত্বপূর্ণ অংশ, যা JavaScript লাইব্রেরি, ফ্রেমওয়ার্ক এবং অন্যান্য ৩য় পার্টি কোডের টাইপ সম্পর্কে TypeScript-কে জানাতে সাহায্য করে। TypeScript নিজে কিছু টাইপ ডেক্লারেশন ফাইল তৈরি করে, তবে অনেক বাইরের লাইব্রেরি বা ফ্রেমওয়ার্কে আপনাকে টাইপ ডেক্লারেশন ফাইল আলাদাভাবে তৈরি করতে বা ইনস্টল করতে হতে পারে।
১. টাইপ ডেক্লারেশন ফাইল কী?
টাইপ ডেক্লারেশন ফাইল .d.ts এক্সটেনশন ব্যবহার করে এবং এগুলো TypeScript-কে জানায় যে, একটি নির্দিষ্ট JavaScript ফাইল কীভাবে কাজ করবে এবং এর ভিতরে কোন ধরনের ডেটা ব্যবহৃত হবে। এটি মূলত টাইপ সিস্টেমে টুল হিসেবে কাজ করে এবং টাইপ চেকিংয়ের জন্য সাহায্য করে।
এটি TypeScript কে বাইরের লাইব্রেরি বা কোডের সঠিক টাইপ সনাক্ত করতে সাহায্য করে, বিশেষত যখন সেই লাইব্রেরি টাইপ নিরাপত্তা নিশ্চিত করার জন্য TypeScript এর জন্য তৈরি করা হয়নি।
২. টাইপ ডেক্লারেশন ফাইলের উদাহরণ
একটি সাধারণ টাইপ ডেক্লারেশন ফাইলের উদাহরণ হতে পারে:
উদাহরণ: myLibrary.d.ts
// myLibrary.d.ts
declare module "myLibrary" {
export function greet(name: string): string;
export function add(a: number, b: number): number;
}
এখানে, myLibrary মডিউলের জন্য একটি টাইপ ডেক্লারেশন ফাইল তৈরি করা হয়েছে। এটি TypeScript-কে জানাচ্ছে যে, greet একটি string আর্গুমেন্ট নেয় এবং একটি string রিটার্ন করে, এবং add দুটি number গ্রহণ করে এবং একটি number রিটার্ন করে।
এই ফাইলটি TypeScript প্রকল্পে ইমপোর্ট করলে, TypeScript সঠিকভাবে টাইপ চেকিং করতে পারবে, এমনকি যদি লাইব্রেরিটি JavaScript দিয়ে লেখা হয়।
৩. টাইপ ডেক্লারেশন ফাইল তৈরি করা
আপনি যখন একটি নতুন লাইব্রেরি ব্যবহার করেন বা এমন কোনও কোড ব্যবহার করেন যার জন্য টাইপ ডেক্লারেশন ফাইল নেই, তখন আপনাকে নিজের টাইপ ডেক্লারেশন ফাইল তৈরি করতে হতে পারে।
টাইপ ডেক্লারেশন ফাইল সাধারণত .d.ts এক্সটেনশন দিয়ে তৈরি করা হয়।
টাইপ ডেক্লারেশন ফাইলের উদাহরণ:
ধরা যাক আপনি একটি utils.js ফাইল ব্যবহার করছেন এবং এতে কিছু ফাংশন রয়েছে, যা আপনি TypeScript-এ ব্যবহার করতে চান। আপনি একটি টাইপ ডেক্লারেশন ফাইল utils.d.ts তৈরি করবেন।
// utils.d.ts
declare function sum(a: number, b: number): number;
declare function multiply(a: number, b: number): number;
এটি TypeScript-কে জানিয়ে দেয় যে, sum এবং multiply ফাংশন দুটি number আর্গুমেন্ট নেবে এবং একটি number রিটার্ন করবে।
৪. ডিক্লারেশন জেনারেশন (Declaration Generation)
টাইপস্ক্রিপ্টে ডিক্লারেশন ফাইল তৈরি করার জন্য tsc (TypeScript Compiler) ব্যবহার করা যেতে পারে। আপনি যখন TypeScript ফাইল থেকে জেনেরেটেড জাভাস্ক্রিপ্ট ফাইলের জন্য ডিক্লারেশন ফাইল ( .d.ts ) তৈরি করতে চান, তখন আপনি --declaration (short -d) অপশন ব্যবহার করবেন।
উদাহরণ: ডিক্লারেশন ফাইল তৈরি করা
ধরা যাক, আপনার একটি TypeScript ফাইল utils.ts রয়েছে, যেখানে কিছু ফাংশন ডিফাইন করা আছে:
// utils.ts
export function sum(a: number, b: number): number {
return a + b;
}
export function multiply(a: number, b: number): number {
return a * b;
}
এখন, আপনি যদি TypeScript ফাইলের জন্য ডিক্লারেশন ফাইল ( .d.ts ) জেনারেট করতে চান, তাহলে নিচের কমান্ডটি ব্যবহার করতে হবে:
tsc --declaration utils.ts
এটি একটি utils.d.ts ফাইল তৈরি করবে, যা নিচের মতো হতে পারে:
// utils.d.ts
export declare function sum(a: number, b: number): number;
export declare function multiply(a: number, b: number): number;
এখন TypeScript প্রকল্পে এই .d.ts ফাইলটি যোগ করলে, TypeScript এই ফাংশনগুলোকে টাইপ সেফভাবে চেক করতে পারবে।
৫. ডিক্লারেশন ফাইল ইনস্টল করা
বহু জনপ্রিয় ৩য় পার্টি লাইব্রেরি যেমন React, Lodash, ইত্যাদির জন্য TypeScript ডিক্লারেশন ফাইল পাওয়া যায়। অনেক লাইব্রেরির জন্য টাইপ ডেক্লারেশন ফাইলগুলো DefinitelyTyped রেপোজিটরিতে রাখা হয়। আপনি npm বা yarn ব্যবহার করে এই ডিক্লারেশন ফাইল ইনস্টল করতে পারেন।
উদাহরণ: React টাইপ ডিক্লারেশন ইনস্টল করা
npm install --save-dev @types/react @types/react-dom
এটি @types/react এবং @types/react-dom প্যাকেজ ইনস্টল করবে, যা React লাইব্রেরির টাইপ ডেক্লারেশন ফাইল। এর মাধ্যমে আপনি React কোডে TypeScript ব্যবহার করতে পারবেন।
৬. TypeScript এর সাথে External Library-র টাইপ ডেক্লারেশন ব্যবহার
অনেক প্যাকেজ TypeScript-এর জন্য টাইপ ডেক্লারেশন ফাইল সরবরাহ করে না, কিন্তু @types স্কোপের মধ্যে বাইরের ডিক্লারেশন ফাইল পাওয়া যেতে পারে। উদাহরণস্বরূপ, lodash লাইব্রেরির জন্য টাইপ ডেক্লারেশন ইনস্টল করা:
npm install --save-dev @types/lodash
এটি lodash লাইব্রেরির জন্য টাইপ ডেক্লারেশন ফাইল ইনস্টল করবে, যার ফলে TypeScript আপনার কোডে lodash ব্যবহার করার সময়ে টাইপ চেক করতে পারবে।
সারাংশ
- টাইপ ডেক্লারেশন ফাইল
.d.tsএক্সটেনশন দিয়ে তৈরি হয় এবং বাইরের JavaScript লাইব্রেরি বা কোডের টাইপ সম্পর্কে TypeScript-কে জানায়। - টাইপ ডেক্লারেশন ফাইল তৈরি করা বা ইনস্টল করার মাধ্যমে আপনি TypeScript-কে একটি JavaScript কোডের সঠিক টাইপ নির্ধারণ করতে সাহায্য করতে পারেন।
- TypeScript প্রকল্পে ডিক্লারেশন ফাইল তৈরি করতে
--declarationঅপশন ব্যবহার করা হয়। - বাইরের লাইব্রেরির জন্য টাইপ ডিক্লারেশন ফাইল পাওয়া যায় এবং এগুলো DefinitelyTyped রেপোজিটরিতে থাকে।
এই প্রক্রিয়াগুলি ব্যবহার করে TypeScript প্রজেক্টে আপনি বাইরের কোড বা লাইব্রেরি ব্যবহারের সময় টাইপ সেফটি নিশ্চিত করতে পারবেন।
Read more