TypeScript একটি JavaScript superset, যা স্ট্যাটিক টাইপিং সিস্টেম প্রদান করে। TypeScript ব্যবহার করে আপনি JavaScript কোডে টাইপ সেফটি (Type Safety) যুক্ত করতে পারেন, যার মাধ্যমে কম্পাইল টাইমে ভুলগুলি চিহ্নিত করা সম্ভব হয়। তবে, TypeScript কোড ট্রান্সপাইল করতে BabelJS এর ভূমিকা গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি Babel ব্যবহার করে TypeScript কোডকে JavaScript এ রূপান্তর করতে চান।
BabelJS শুধুমাত্র কোডের ট্রান্সপাইলিং কার্য সম্পাদন করে, কিন্তু static type checking এর কাজটি TypeScript কম্পাইলার (tsc) বা অন্য কোনো টাইপ চেকিং টুলের মাধ্যমে করা হয়। এই নিবন্ধে আমরা দেখব, TypeScript এর টাইপ চেকিংয়ের ভূমিকা এবং BabelJS এর সাথে তার ইন্টিগ্রেশন কিভাবে কাজ করে।
১. TypeScript এর Static Type Checking কী?
TypeScript এর Static Type Checking হল একটি বৈশিষ্ট্য, যার মাধ্যমে আপনি কোডে টাইপ সম্পর্কিত ভুল বা সমস্যা নির্ণয় করতে পারেন। TypeScript কোড কম্পাইল করার সময় টাইপ সম্পর্কিত সমস্ত ভুল চিহ্নিত করা হয় এবং ডেভেলপারকে সতর্ক করে দেওয়া হয়।
উদাহরণস্বরূপ:
let num: number = 10;
num = 'Hello'; // টাইপ ভুল, এখানে 'num' একটি number টাইপ, কিন্তু 'string' দেয়া হচ্ছে।
এখানে num ভেরিয়েবলটি number টাইপ হিসাবে ডিফাইন করা হয়েছে, কিন্তু পরে যদি তা string টাইপের কোনো মান অ্যাসাইন করা হয়, TypeScript এই ভুলটি কম্পাইল টাইমে ধরতে পারবে এবং সতর্ক করবে।
২. BabelJS এবং TypeScript: কিভাবে একসাথে কাজ করে?
যদিও TypeScript নিজের একটি কম্পাইলার (tsc) ব্যবহার করে কোডের টাইপ চেকিং এবং ট্রান্সপাইলিং (JavaScript এ রূপান্তর) করে, আপনি BabelJS ব্যবহার করেও TypeScript কোডকে ট্রান্সপাইল করতে পারেন। তবে, BabelJS শুধুমাত্র কোড ট্রান্সপাইল করতে ব্যবহৃত হয় এবং static type checking এর জন্য TypeScript এর নিজস্ব কম্পাইলার ব্যবহৃত হয়।
Babel এর মাধ্যমে TypeScript কোড ট্রান্সপাইল করার জন্য @babel/preset-typescript প্রিসেট ব্যবহার করা হয়।
৩. BabelJS এবং TypeScript ইন্টিগ্রেশন
BabelJS TypeScript কোডকে JavaScript কোডে রূপান্তর করতে পারে, কিন্তু এটি টাইপ চেকিং বা টাইপ ইনফরমেশন যাচাই করে না। এর মানে হল যে, TypeScript কোডটি শুধুমাত্র BabelJS দ্বারা ট্রান্সপাইল করা হবে এবং টাইপ ভুলগুলো TypeScript কম্পাইলার দ্বারা চেক করতে হবে।
প্রয়োজনীয় প্যাকেজ ইনস্টল করা
BabelJS দ্বারা TypeScript কোড ট্রান্সপাইল করতে প্রথমে আপনাকে কিছু প্যাকেজ ইনস্টল করতে হবে:
npm install --save-dev @babel/core @babel/preset-typescript babel-loader
এছাড়া, আপনাকে webpack.config.js ফাইলটিতে এই প্রিসেটটি কনফিগার করতে হবে:
webpack.config.js কনফিগারেশন
const path = require('path');
module.exports = {
entry: './src/index.ts', // আপনার TypeScript ফাইলের এন্ট্রি পয়েন্ট
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.ts$/, // .ts এক্সটেনশনের ফাইলগুলো ট্রান্সপাইল করা হবে
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-typescript'], // TypeScript প্রিসেট ব্যবহার
},
},
},
],
},
resolve: {
extensions: ['.ts', '.js'], // .ts এবং .js ফাইল এক্সটেনশনের সমর্থন
},
};
এখানে @babel/preset-typescript ব্যবহার করা হয়েছে, যাতে TypeScript ফাইলগুলো JavaScript এ রূপান্তরিত হয়। কিন্তু টাইপ চেকিং এখানে Babel করবে না।
৪. Babel এবং TypeScript কম্পাইলার (tsc) এর মধ্যে পার্থক্য
- BabelJS:
- শুধুমাত্র কোড ট্রান্সপাইল করে (যেমন, ES6 কোডকে ES5 তে রূপান্তর করা, JSX কোডকে JavaScript কোডে রূপান্তর করা)।
- টাইপ চেকিং বা টাইপ সম্পর্কিত কোনো ভুল চিহ্নিত করে না।
- TypeScript (tsc):
- টাইপ চেকিং, টাইপ নির্ধারণ এবং সঠিক টাইপ ব্যবহার নিশ্চিত করে।
- কোডের টাইপ ভুলগুলো কম্পাইল টাইমে চেক করে এবং টাইপ ভুলের জন্য সতর্ক করে।
উদাহরণ:
TypeScript কোড:
let message: string = 'Hello, World!';
message = 123; // টাইপ ভুল: 'message' হল string, কিন্তু এখানে number দেয়া হচ্ছে।
এই কোডটি tsc কমান্ড দিয়ে কম্পাইল করলে TypeScript টাইপ ভুলটি ধরবে এবং একটি ত্রুটি (error) প্রদান করবে।
Babel কেবল message = 123; এর মতো কোডের সিনট্যাক্স ভুলকেই চিহ্নিত করবে, তবে টাইপ ভুল চেক করবে না। এটি কেবল JavaScript কোড তৈরি করবে।
৫. BabelJS এবং TypeScript এর Static Type Checking এর সমন্বয়
যদি আপনি BabelJS ব্যবহার করে TypeScript কোড ট্রান্সপাইল করতে চান এবং টাইপ চেকিং করতে চান, তবে আপনাকে TypeScript কম্পাইলার (tsc) ব্যবহার করতে হবে। আপনি TypeScript এর tsc কমান্ড চালিয়ে টাইপ চেকিং করতে পারেন:
npx tsc --noEmit
এটি শুধুমাত্র টাইপ চেকিং করবে এবং কোন আউটপুট ফাইল তৈরি করবে না। তবে যদি আপনি TypeScript কোডটি কম্পাইল করতে চান এবং JavaScript এ রূপান্তর করতে চান, তাহলে আপনাকে tsc ব্যবহার করতে হবে।
npx tsc
এটি TypeScript কোডটিকে JavaScript এ রূপান্তর করবে এবং টাইপ ভুল থাকলে ত্রুটি দিবে।
৬. TypeScript এবং BabelJS এর সাথে উন্নত স্ট্যাক তৈরি করা
ধরা যাক, আপনি React এবং TypeScript ব্যবহার করছেন এবং BabelJS দিয়ে কোড ট্রান্সপাইল করতে চান। এখানে আপনার কনফিগারেশন নিম্নরূপ হতে পারে:
প্রয়োজনীয় প্যাকেজ ইনস্টল করা:
npm install --save-dev @babel/core @babel/preset-env @babel/preset-react @babel/preset-typescript babel-loader
webpack.config.js কনফিগারেশন:
module.exports = {
entry: './src/index.tsx',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.tsx?$/, // .ts এবং .tsx ফাইলগুলোর জন্য
use: 'babel-loader',
exclude: /node_modules/,
},
],
},
resolve: {
extensions: ['.tsx', '.ts', '.js'],
},
};
এটি React JSX এবং TypeScript কোডকে একসাথে ট্রান্সপাইল করবে।
সারাংশ
BabelJS এবং TypeScript একসাথে কাজ করার মাধ্যমে আপনি আধুনিক JavaScript ফিচার যেমন ES6, JSX, এবং TypeScript এর টাইপ সিস্টেম উপভোগ করতে পারেন। Babel TypeScript কোডটিকে JavaScript এ রূপান্তরিত করে, কিন্তু টাইপ চেকিং এবং টাইপ নির্ধারণের কাজটি TypeScript কম্পাইলার (tsc) দ্বারা করা হয়। এর মাধ্যমে আপনি আপনার TypeScript কোডে স্ট্যাটিক টাইপ সেফটি বজায় রাখতে পারেন এবং BabelJS ব্যবহার করে দ্রুত ট্রান্সপাইলিং করতে পারেন।
Read more