TypeScript জয়ী হয়েছে। এর বিনিময়ে আমরা কী পেলাম।
এখন আর TypeScript ব্যবহার নিয়ে কেউ বিতর্ক করে না। নতুন ফ্রন্টএন্ড প্রজেক্টগুলোতে এটি ডিফল্ট হিসেবে ব্যবহৃত হয়। বিতর্ক শেষ। TypeScript জয়ী হয়েছে।
জয়ী হওয়াটা একঘেয়ে অংশ। আসল মূল্য হলো আপনার কাজের প্রবাহে (workflow) টাইপগুলো কী ভূমিকা রাখে। এটি কেবল টাইপো (typos) ধরার চেয়েও বেশি কিছু।
একটি ফাংশন সিগনেচার ডকুমেন্টেশনের মতো কাজ করে। এটি কখনোই পুরনো বা অপ্রাসঙ্গিক হয়ে পড়ে না। যদি কোড পরিবর্তন হয়, তবে কম্পাইলার সাথে সাথে বিল্ডটি ফেল করে দেয়।
একটি রিমাইন্ডার শিডিউল করার ফাংশনের কথা ভাবুন। একটি কমেন্ট না পড়েই আপনি বুঝতে পারবেন এর কী প্রয়োজন এবং এটি কী রিটার্ন করবে। আপনি কমিউনিকেশন চ্যানেলের সঠিক অপশনগুলো দেখতে পাবেন। আপনি যদি একটি নতুন চ্যানেল যোগ করেন, তবে কম্পাইলার আপনাকে জানিয়ে দেবে কোডের কোন কোন জায়গায় আপডেট করতে হবে। একটি কমেন্ট সেখানে থেকে যেত এবং ভুল হয়ে যেত।
রিফ্যাক্টরিং (Refactoring) নিরাপদ হয়ে ওঠে। টাইপহীন কোডে একটি ফিল্ডের নাম পরিবর্তন করা বেশ ভয়ের কাজ। আপনি স্ট্রিং সার্চ করেন এবং ভালো কিছুর আশা করেন। TypeScript-এ আপনি শুধু টাইপটি পরিবর্তন করেন। কম্পাইলার আপনাকে একটি তালিকা দিয়ে দেবে যে কী কী ভেঙে গেছে। রিফ্যাক্টরিং আর ঝুঁকিপূর্ণ থাকে না; এটি একটি নিরাপদ কাজে পরিণত হয়।
টাইপ আপনাকে AI ব্যবহার করতেও সাহায্য করে।
যখন আপনি কোনো টাইপহীন JavaScript এডিট করার জন্য AI-কে বলেন, তখন এটি অবজেক্টের গঠন (shape) অনুমান করে। যখন আপনি TypeScript ব্যবহার করেন, তখন টাইপটিই হয়ে ওঠে স্পেসিফিকেশন। AI ঠিক জানে কী কী অনুমোদিত। এর ফলে এররগুলো প্রোডাকশন ক্র্যাশ করার পরিবর্তে কম্পাইল এরর হিসেবে সামনে আসে। টাইপ জেনারেটেড কোডকে এমন কোডে রূপান্তরিত করে যা আপনার সিস্টেমের সাথে মানানসই।
মানুষ বলত টাইপ আপনার কাজ ধীর করে দেয়। কিন্তু একটি AI ওয়ার্কফ্লোতে, টাইপ আপনার গতি বাড়িয়ে দেয়। এগুলো গার্ডরেল (guardrails) হিসেবে কাজ করে। প্রতিটি লাইন হাতে পরীক্ষা না করেই আপনি আত্মবিশ্বাসের সাথে জেনারেটেড কোড গ্রহণ করতে পারেন।
এই নিয়মগুলো মেনে আরও উন্নত টাইপ লিখুন:
- একাধিক বুলিয়ান (boolean) এর পরিবর্তে ইউনিয়ন (union) ব্যবহার করুন। তিনটি আলাদা ফ্ল্যাগ ব্যবহারের চেয়ে "loading" | "error" | "ready"-এর মতো একটি স্ট্যাটাস অনেক ভালো।
- আপনার ডোমেইন টাইপগুলোর নাম দিন। একটি সাধারণ নম্বরের পরিবর্তে
Cents-এর মতো টাইপ ব্যবহার করা আপনার উদ্দেশ্য স্পষ্ট করে। anyএড়িয়ে চলুন।unknownব্যবহার করুন এবং সেটিকে ন্যারো (narrow) down করুন।anyকিওয়ার্ড আপনার সেফটি নেট নষ্ট করে দেয়।- ইনফারেন্স (inference)-কে কাজ করতে দিন। সবকিছু অ্যানোটেশন (annotate) করবেন না। শুধুমাত্র আপনার বাউন্ডারিগুলোতে অ্যানোটেশন করুন এবং বাকিটা স্বাভাবিকভাবে চলতে দিন।
TypeScript কোডবেসগুলোকে সুনির্দিষ্ট চুক্তিতে (explicit contracts) পরিণত করেছে। এই চুক্তিগুলো নির্ভয়ে রিফ্যাক্টরিং এবং নির্ভরযোগ্য AI সহায়তা নিশ্চিত করে।
আমরা বাগ (bug) বন্ধ করতে টাইপ ব্যবহার করা শুরু করেছিলাম। আমরা সেগুলো ব্যবহার করে যাচ্ছি কারণ সেগুলোই অন্য সবকিছুর ভিত্তি।
উৎস: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-53lo
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi
