TypeScript Won. Here Is What That Bought Us.
বিতর্ক শেষ। বেশিরভাগ নতুন ফ্রন্টএন্ড প্রজেক্টে ডিফল্ট হিসেবে TypeScript ব্যবহার করা হয়। এটি গ্রহণ করা উচিত কি না, তা নিয়ে মানুষ আর বিতর্ক করে না।
এর আসল মূল্য শুধু টাইপো (typos) ধরায় নয়। এটি মূল প্রচারণার চেয়েও অনেক বেশি গভীর।
Types এমন ডকুমেন্টেশন প্রদান করে যা কখনো অপ্রাসঙ্গিক হয়ে পড়ে না। একটি function signature আপনাকে স্পষ্টভাবে বলে দেয় যে কোডের একটি অংশের কী প্রয়োজন এবং এটি কী রিটার্ন করে। যদি একজন ডেভেলপার একটি union type-এ নতুন কোনো অপশন যোগ করেন, তবে compiler আপনাকে কোডের প্রতিটি অংশ আপডেট করতে বাধ্য করবে। Comments সময়ের সাথে সাথে অকেজো হয়ে যায়, কিন্তু Types হয় না।
Refactoring একটি ভীতিজনক কাজ থেকে একটি নিরাপদ কাজে পরিণত হয়েছে। Untyped কোডে কোনো ফিল্ডের নাম পরিবর্তন করা অনেকটা জুয়া খেলার মতো মনে হয়। TypeScript-এ, আপনি শুধু type পরিবর্তন করবেন এবং compiler আপনাকে প্রতিটি ত্রুটিপূর্ণ লাইনের একটি তালিকা দেবে। এটি পুরনো কোড নিয়ে কাজ করার ভয় দূর করে দেয়।
Types আপনার AI-এর সাথে কাজের মানও উন্নত করে।
যখন আপনি কোনো AI-কে untyped JavaScript এডিট করতে বলেন, তখন এটি স্ট্রাকচারটি অনুমান করে নেয়। এর ফলে এমন ভুল হতে পারে যা production error-এর দিকে নিয়ে যায়। TypeScript-এ, type একটি specification হিসেবে কাজ করে। AI নিয়মগুলো জানে। যদি AI কোনো ভুল করে, compiler তা সাথে সাথে ধরে ফেলে। Types "plausible code"-কে "proven code"-এ রূপান্তরিত করে।
Types আপনার কাজের গতি কমিয়ে দেয় না। বরং একটি AI workflow-এ এটি আপনার গতি বাড়িয়ে দেয়। এগুলো guardrails হিসেবে কাজ করে যাতে আপনি প্রতিটি লাইন ম্যানুয়ালি চেক না করেই জেনারেট করা কোডকে বিশ্বাস করতে পারেন।
আপনার types গুলো উদ্দেশ্যমূলকভাবে লিখুন:
• একাধিক booleans-এর পরিবর্তে unions ব্যবহার করুন। "loading" | "error" | "ready"-এর মতো একটি status অসম্ভব অবস্থা (impossible states) প্রতিরোধ করে। • আপনার domain types-এর নাম দিন। "type Cents = number" ব্যবহার করলে আপনার উদ্দেশ্য স্পষ্ট হয়। • "any" এড়িয়ে চলুন। পরিবর্তে "unknown" ব্যবহার করুন এবং আপনার types গুলোকে narrow করুন। "any" আপনার safety net নষ্ট করে দেয়। • inference-কে কাজ করতে দিন। আপনাকে সবকিছু লেবেল করার প্রয়োজন নেই। আপনার function signatures এবং exported APIs লেবেল করুন, তারপর বাকিটা স্বাভাবিকভাবে চলতে দিন।
TypeScript কোডবেসগুলোকে বাধ্যতামূলক চুক্তির (enforced contracts) সেটে পরিণত করেছে। এই চুক্তিগুলো নির্ভয়ে refactoring এবং নির্ভরযোগ্য AI সহায়তা নিশ্চিত করে।
আমরা বাগ (bugs) বন্ধ করার জন্য types ব্যবহার করা শুরু করেছিলাম। আমরা এগুলো ব্যবহার চালিয়ে যাচ্ছি কারণ এগুলো অন্য সবকিছুর ভিত্তি।
Source: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-12m8
