TypeScript 7 এসেছে “isolated declarations” নিয়ে, যা একটি কম্পাইলার মোড যা বড় monorepo-গুলোকে সমান্তরালভাবে (in parallel) ফাইল কম্পাইল করতে সাহায্য করে এবং ডেভেলপারদের ফিডব্যাক লুপ দ্রুততর করে।

কেন এখন isolated declarations গুরুত্বপূর্ণ

এই রিলিজের আগে পর্যন্ত, TypeScript কম্পাইলার declaration ফাইলগুলো (.d.ts) একটি সিঙ্গেল থ্রেডে প্রসেস করত। শত শত প্যাকেজ সম্বলিত কোডবেসগুলোর ক্ষেত্রে, এই ধাপটি প্রায়ই পুরো build pipeline-এর গতি কমিয়ে দিত। টাইপ-চেকিংয়ের কাজকে বিভিন্ন কোর (cores)-এর মধ্যে ভাগ করে দেওয়ার মাধ্যমে, isolated declarations সেই সব টিমের জন্য build time কমিয়ে আনে যারা তাদের সমস্ত লাইব্রেরি একটি মাত্র রিপোজিটরিতে রাখে।

যে কোনো সংস্থা যারা CI জব চালায় বা দ্রুত লোকাল রিবিল্ড (local rebuilds) প্রয়োজন হয়, তারা তাৎক্ষণিকভাবে এর প্রভাব বুঝতে পারবে।

প্যারালাল টাইপ চেকিংয়ের পথ

Microsoft বহু বছর আগেই incremental compilation যুক্ত করেছিল, কিন্তু ফাইলগুলো একে অপরের ওপর নির্ভরশীল হওয়ার কারণে declaration phase-টি সিকোয়েন্সিয়াল (sequential) হিসেবেই থেকে গিয়েছিল। Monorepo-র আকার বাড়ার সাথে সাথে, এই সিঙ্গেল-থ্রেডেড প্রক্রিয়াটি একটি ব্যয়বহুল বাধা (bottleneck) হয়ে দাঁড়িয়েছিল। Isolated declarations এই ডিপেন্ডেন্সি চেইন ভেঙে দেয়, প্রতিটি ফাইলের পাবলিক সারফেসকে একটি স্বাধীন ইউনিট হিসেবে বিবেচনা করে এবং সেগুলোকে একই সাথে ভ্যালিডেট করে।

কারা লাভবান হবে, আর কারা নয়

  • বড় monorepo ব্যবহারকারী ডেভ টিম – তারা build time-এ সবচেয়ে বড় হ্রাস দেখতে পাবে, বিশেষ করে একাধিক CPU কোর বিশিষ্ট CI এজেন্টগুলোতে।
  • ছোট প্রজেক্ট বা সিঙ্গেল-প্যাকেজ অ্যাপ – তারা হয়তো খুব সামান্য উন্নতি লক্ষ্য করবে, কারণ declaration ধাপটি ইতিমধ্যে মোট কম্পাইল সময়ের খুব সামান্য অংশ নেয়।
  • সীমিত হার্ডওয়্যার ব্যবহারকারী টিম – একই কারণে তারা সামান্য উন্নতিই পাবে।

TypeScript 7-এর ব্যাপক রিলিজ

Isolated declarations এসেছে নিরাপত্তা-কেন্দ্রিক বেশ কিছু আপগ্রেড নিয়ে:

  • Strict mode refinementsstrictIndexSignatures-এর মতো নতুন চেকগুলো কোড যখন কোনো সম্ভাব্য অনুপস্থিত অবজেক্ট কী (object key) অ্যাক্সেস করার চেষ্টা করে, তখন সতর্ক করে দেয়।
  • Named tuple elements – ডেভেলপাররা এখন tuple পজিশনগুলোতে লেবেল দিতে পারবেন, যা API signature-গুলোকে স্বয়ংক্রিয়ভাবে ডকুমেন্টেশন হিসেবে কাজ করতে সাহায্য করবে।
  • Enhanced satisfies operator – জটিল generics-এর উন্নত হ্যান্ডলিং পঠনযোগ্যতা (readability) বজায় রেখে type inference-কে আরও উন্নত করে।
  • Async context propagation – AsyncContext API-এর সাপোর্ট অ্যাসিনক্রোনাস কল স্ট্যাক (asynchronous call stacks) ট্রেসিং করতে সাহায্য করে।
  • Decorator metadata – TC39 প্রপোজালটি রানটাইম কোডকে ক্লাস ডেকোরেশনগুলো পরীক্ষা করার সুযোগ দেয়।
  • Explicit variance annotations – Generic প্যারামিটারগুলোতে + বা - ব্যবহার করে covariance বা contravariance নির্দেশ করা যায়, যা টাইপ চেকারের নির্ভুলতা বৃদ্ধি করে।

এই সংযোজনগুলো TypeScript-এর “type-first” ল্যাঙ্গুয়েজ হিসেবে খ্যাতিকে আরও সুদৃঢ় করে, তবে isolated declarations হলো একমাত্র ফিচার যা সরাসরি কোডবেসের আকারের সাথে বাড়তে থাকা একটি সমস্যার সমাধান করে।

পরবর্তীতে যা নজর রাখা উচিত

মূল কথা

Isolated declarations monorepo-নির্ভর টিমগুলোকে দ্রুত বিল্ড সুবিধা দেয়। যে সংস্থাগুলো CI মিনিটের জন্য অর্থ প্রদান করে বা ধীরগতির লোকাল রিবিল্ডের সমস্যায় ভোগে, তাদের জন্য TypeScript 7-এ আপগ্রেড করা একটি কম ঝুঁকির পদক্ষেপ যা পরিমাপযোগ্য সময় এবং খরচ সাশ্রয় করে। এই রিলিজের বাকি অংশগুলো দরকারী সেফটি নেট যোগ করে, তবে প্যারালাল টাইপ-চেকিং ইঞ্জিনটি হলো প্রধান ফিচার যা আধুনিক JavaScript ডেভেলপমেন্টের স্কেলেবিলিটি চ্যালেঞ্জের সরাসরি উত্তর দেয়।