TypeScript জিতে গেছে। এটি আসলে আমাদের কী এনে দিয়েছে।
এখন আর TypeScript ব্যবহার নিয়ে কেউ বিতর্ক করে না। নতুন প্রজেক্টগুলোতে এটি ডিফল্ট হিসেবে ব্যবহৃত হয়। বিতর্ক এখন শেষ।
এর আসল মূল্য শুধু টাইপো (typos) ধরা নয়। এটি তার চেয়েও অনেক বেশি কিছু।
একটি ফাংশন সিগনেচার ডকুমেন্টেশনের মতো কাজ করে। এটি কখনো পুরনো বা অপ্রাসঙ্গিক হয়ে পড়ে না। যদি কোড পরিবর্তন হয়, তবে কম্পাইলার বিল্ডটি ফেল করে দেয়।
এই ফাংশনটি দেখুন:
function scheduleReminder(
userId: string,
at: Date,
channel: "email" | "push" | "sms",
): Promise
আপনি ঠিক জানেন এটি কীভাবে কল করতে হবে। আপনি জানেন এর কী প্রয়োজন এবং এটি কী রিটার্ন করে। আপনি জানেন যে চ্যানেলটি অবশ্যই তিনটি নির্দিষ্ট স্ট্রিংয়ের মধ্যে একটি হতে হবে।
আপনি যদি পরে একটি "slack" অপশন যোগ করেন, তবে কম্পাইলার আপনাকে কোডের প্রতিটি অংশ আপডেট করতে বাধ্য করবে। একটি কমেন্ট (comment) শুধু সময়ের সাথে পুরনো হয়ে যাবে এবং আপনাকে ভুল তথ্য দেবে।
টাইপহীন (untyped) কোডে কোনো ফিল্ডের নাম পরিবর্তন করা বেশ ভয়ের কাজ। আপনি স্ট্রিংগুলো সার্চ করেন এবং ভালো কিছুর আশা করেন। TypeScript-এ, আপনি শুধু টাইপটি পরিবর্তন করেন। কম্পাইলার আপনাকে একটি 'টু-ডু লিস্ট' দিয়ে দেয় যে কী কী ভেঙে গেছে। রিফ্যাক্টরিং (Refactoring) তখন নিরাপদ হয়ে ওঠে।
টাইপ AI ব্যবহারের ক্ষেত্রেও সাহায্য করে।
একটি AI মডেল JavaScript-এ কোডের গঠন নিয়ে অনুমান করে। TypeScript-এ, টাইপটি হলো স্পেসিফিকেশন। AI জানে কী অনুমোদিত। ভুলগুলো প্রোডাকশন ক্র্যাশ করার পরিবর্তে এরর (error) হিসেবে সামনে আসে।
টাইপগুলো গার্ডরেল (guardrails) হিসেবে কাজ করে। এগুলো আপনাকে প্রতিটি লাইন হাতে পরীক্ষা না করেই আত্মবিশ্বাসের সাথে AI কোড ব্যবহার করতে সাহায্য করে।
এই নিয়মগুলো মেনে আরও উন্নত টাইপ লিখুন:
• অনেকগুলো বুলিয়ান (boolean) ব্যবহার করার পরিবর্তে ইউনিয়ন (union) ব্যবহার করুন। তিনটি আলাদা ফ্ল্যাগ ব্যবহার করার চেয়ে "loading" | "error" | "ready"-এর মতো একটি স্ট্যাটাস অনেক ভালো।
• আপনার ডোমেইন টাইপগুলোর নাম দিন। উদ্দেশ্য বোঝাতে type Cents = number ব্যবহার করুন।
• any এড়িয়ে চলুন। পরিবর্তে unknown ব্যবহার করুন এবং টাইপটি ন্যারো (narrow) করুন।
• ইনফারেন্স (inference)-কে কাজ করতে দিন। ফাংশন সিগনেচারের মতো সীমানাগুলোতে অ্যানোটেশন (annotate) করুন, কিন্তু বাকি অংশগুলো স্বাভাবিকভাবে চলতে দিন।
TypeScript কোডবেসগুলোকে বাধ্যতামূলক চুক্তির (enforced contracts) সেটে পরিণত করেছে। এই চুক্তিগুলো নির্ভয়ে রিফ্যাক্টরিং এবং নির্ভরযোগ্য AI সহায়তা নিশ্চিত করে।
আমরা বাগ (bug) কমানোর জন্য টাইপ ব্যবহার করা শুরু করেছিলাম। আমরা এগুলো ব্যবহার করে যাচ্ছি কারণ এগুলোই অন্য সবকিছুর ভিত্তি।
Source: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-53lo
