TypeScript جیت گیا۔ یہاں وہ سب کچھ ہے جو ہمیں حقیقت میں حاصل ہوا۔
اب کوئی TypeScript کے استعمال پر بحث نہیں کرتا۔ نئے پروجیکٹس میں اسے ڈیفالٹ کے طور پر استعمال کیا جاتا ہے۔ بحث ختم ہو چکی ہے۔
اس کی اصل اہمیت صرف ٹائپنگ کی غلطیوں (typos) کو پکڑنا نہیں ہے۔ یہ اس سے کہیں زیادہ ہے۔
ایک فنکشن سگنیچر (function signature) بطور دستاویز (documentation) کام کرتا ہے۔ یہ کبھی پرانا یا غیر متعلقہ نہیں ہوتا۔ اگر کوڈ تبدیل ہوتا ہے، تو کمپائلر بلڈ (build) کو فیل کر دیتا ہے۔
اس فنکشن کو دیکھیں:
function scheduleReminder(
userId: string,
at: Date,
channel: "email" | "push" | "sms",
): Promise<ReminderId>;
آپ کو بالکل معلوم ہے کہ اسے کیسے کال کرنا ہے۔ آپ جانتے ہیں کہ اسے کس چیز کی ضرورت ہے اور یہ کیا واپس (return) کرتا ہے۔ آپ جانتے ہیں کہ چینل (channel) ان تین مخصوص اسٹرنگز (strings) میں سے ایک ہونا چاہیے۔
اگر آپ بعد میں "slack" کا آپشن شامل کرتے ہیں، تو کمپائلر آپ کو اپنے کوڈ کے ہر حصے کو اپ ڈیٹ کرنے پر مجبور کر دیتا ہے۔ ایک کمنٹ (comment) محض پرانا ہو کر آپ کو غلط معلومات دے سکتا ہے۔
بغیر ٹائپ والے کوڈ (untyped code) میں، کسی فیلڈ (field) کا نام تبدیل کرنا خوفناک لگتا ہے۔ آپ اسٹرنگز تلاش کرتے ہیں اور بہتر کی امید کرتے ہیں۔ TypeScript میں، آپ ٹائپ تبدیل کرتے ہیں۔ کمپائلر آپ کو ان تمام چیزوں کی فہرست دے دیتا ہے جو خراب ہو گئی ہیں۔ ریفیکٹورنگ (Refactoring) محفوظ ہو جاتی ہے۔
ٹائپس AI کے ساتھ بھی مددگار ثابت ہوتی ہیں۔
ایک AI ماڈل JavaScript میں کوڈ کی ساخت کا اندازہ لگاتا ہے۔ TypeScript میں، ٹائپ ہی وضاحت (specification) ہوتی ہے۔ AI جانتا ہے کہ کیا جائز ہے۔ غلطیاں پروڈکشن کریش (production crashes) کے بجائے ایررز (errors) کی صورت میں سامنے آتی ہیں۔
ٹائپس گارڈ ریلز (guardrails) کے طور پر کام کرتی ہیں۔ یہ آپ کو ہر لائن کو خود چیک کرنے کے بجائے اعتماد کے ساتھ AI کوڈ استعمال کرنے کی اجازت دیتی ہیں۔
ان اصولوں کے ساتھ بہتر ٹائپس لکھیں:
• بہت سے بولینز (booleans) کے بجائے یونینز (unions) کا استعمال کریں۔ "loading" | "error" | "ready" جیسا اسٹیٹس تین الگ الگ فلیگز (flags) سے بہتر ہے۔
• اپنی ڈومین ٹائپس (domain types) کو نام دیں۔ مقصد واضح کرنے کے لیے type Cents = number استعمال کریں۔
• any سے بچیں۔ اس کے بجائے unknown استعمال کریں اور ٹائپ کو محدود (narrow) کریں۔
• انفرنس (inference) کو کام کرنے دیں۔ فنکشن سگنیچرز جیسے اپنے حدود (boundaries) کو اینوٹیٹ (annotate) کریں، لیکن باقی چیزوں کو قدرتی طور پر بہنے دیں۔
TypeScript نے کوڈ بیسز (codebases) کو نافذ شدہ معاہدوں (enforced contracts) کے مجموعوں میں بدل دیا ہے۔ یہ معاہدے بے خوف ریفیکٹورنگ اور قابل اعتماد AI معاونت کو ممکن بناتے ہیں۔
ہم نے بگ (bugs) روکنے کے لیے ٹائپس کا استعمال شروع کیا تھا۔ ہم انہیں اس لیے استعمال کرتے رہتے ہیں کیونکہ وہ باقی سب کچھ کی بنیاد ہیں۔
ماخذ: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-53lo
