Node.js 24 Native TypeScript
Node.js 24 আপনার TypeScript ব্যবহারের পদ্ধতি বদলে দিচ্ছে। এখন আপনি কোনো বিল্ড স্টেপ ছাড়াই প্রোডাকশনে .ts ফাইল চালাতে পারবেন।
রানটাইম লোড করার সময় টাইপ অ্যানোটেশনগুলো সরিয়ে ফেলে। এটি TypeScript-কে অ্যানোটেটেড JavaScript হিসেবে গণ্য করে এবং সরাসরি এক্সিকিউট করে। এর ফলে ট্রান্সপাইলেশন বা বান্ডলিং করার প্রয়োজন আর থাকে না।
কেন এটি গুরুত্বপূর্ণ:
- আপনার কেবল একটি সোর্স অফ ট্রুথ (source of truth) প্রয়োজন।
- আপনি dist ডিরেক্টরি ম্যানেজ করার জটিলতা দূর করতে পারেন।
- আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট হুবহু প্রোডাকশনের মতো হয়।
এটি যেভাবে কাজ করে: মডিউল লোডার সোর্স টেক্সটটি ইন্টারসেপ্ট করে। এটি ইন্টারফেস, টাইপ অ্যানোটেশন এবং টাইপ-অনলি ইম্পোর্টগুলো সরিয়ে ফেলে। অবশিষ্ট লজিকটি স্ট্যান্ডার্ড V8 ইঞ্জিনে চলে। রূপান্তরিত কোডটি মডিউল ক্যাশে থেকে যায়, তাই প্রতিটি মডিউল লোডের সময় এটি কেবল একবারই ঘটে।
যে সীমাবদ্ধতাগুলো আপনার জানা প্রয়োজন: এটি আপনার বিল্ড পাইপলাইনের সম্পূর্ণ বিকল্প নয়। নির্দিষ্ট কিছু কাজের জন্য আপনার এখনও টুলের প্রয়োজন হবে।
- কোনো টাইপ চেকিং নেই: রানটাইম কোনো এরর চেক করে না। বাগ ধরার জন্য আপনাকে অবশ্যই আপনার CI পাইপলাইনে
tsc --noEmitচালাতে হবে। - কোনো পাথ অ্যালিয়াস নেই: এটি
tsconfig.jsonপাথ ম্যাপিং সাপোর্ট করে না। - কোনো ডেকোরেটর নেই: অ্যাডভান্সড ট্রান্সফরমেশনের জন্য এখনও
esbuild-এর মতো বান্ডলার প্রয়োজন। - কোনো রানটাইম সেফটি নেই: সরিয়ে ফেলা টাইপগুলো এক্সিকিউশনের সময় কোনো সুরক্ষা প্রদান করে না। ডেটা ভ্যালিডেশনের জন্য
Zod-এর মতো লাইব্রেরি ব্যবহার করুন।
কখন এটি ব্যবহার করবেন: সিম্পল ডিপেন্ডেন্সি গ্রাফ সম্পন্ন মাইক্রোসার্ভিসের জন্য Native TypeScript একদম উপযুক্ত। এটি মুভিং পার্টস কমিয়ে ডিপ্লয়মেন্টের গতি বাড়িয়ে দেয়।
কখন প্রথাগত বিল্ড পদ্ধতি অনুসরণ করবেন: যদি আপনার অ্যাগ্রেসিভ অপ্টিমাইজেশন, ট্রি শেকিং (tree shaking) বা মিনিফিকেশন প্রয়োজন হয়, তবে আপনার বর্তমান পাইপলাইনটি বজায় রাখুন। জটিল বিল্ড রিকোয়ারমেন্ট সম্পন্ন বড় অ্যাপ্লিকেশনগুলোর জন্য অপ্টিমাইজড JavaScript বান্ডেলগুলোই বেশি কার্যকর হবে।
এটি কীভাবে সেটআপ করবেন: আপনার স্ট্যাক ট্রেস (stack traces) পড়ার উপযোগী রাখতে source maps ফ্ল্যাগ ব্যবহার করুন।
উদাহরণ কমান্ড:
node --enable-source-maps src/server.ts
এটি আপনাকে আপনার অরিজিনাল TypeScript লাইন নম্বর ব্যবহার করে এরর ডিবাগ করতে সাহায্য করবে।