تایپاسکریپت پیروز شد. این همان چیزی است که به دست آوردیم.
بحث تمام شد. تایپاسکریپت پیروز شد. پروژههای جدید بهصورت پیشفرض از آن استفاده میکنند.
هدف اولیه، شناسایی غلطهای تایپی قبل از خراب کردن کد بود. اما ارزش واقعی بسیار فراتر از اینهاست.
تایپها به عنوان مستنداتی عمل میکنند که هرگز قدیمی نمیشوند. امضای یک تابع (function signature) دقیقاً به شما میگوید چه چیزی باید ارسال کنید و چه چیزی دریافت میکنید. اگر گزینه جدیدی به یک لیست اضافه کنید، کامپایلر شما را مجبور میکند تا تمام بخشهای کدتان را بهروزرسانی کنید. در حالی که یک کامنت فقط همانجا میماند و به شما دروغ میگوید.
بازنویسی (Refactoring) ایمن میشود. در کدهای قدیمی JavaScript، تغییر نام یک فیلد مثل قمار کردن است. شما رشتهها (strings) را جستجو میکنید و به بهترین حالت امیدوار هستید. در TypeScript، شما تایپ را تغییر میدهید و کامپایلر فهرستی از تمام خطوط خرابشده را به شما میدهد. بازنویسی دیگر ترسناک نیست؛ بلکه فقط یک وظیفه است.
تایپها همچنین دستیاران هوش مصنوعی را بهتر میکنند.
اگر از یک هوش مصنوعی بخواهید کدهای JavaScript بدون تایپ را ویرایش کند، باید ساختار را حدس بزند. اما اگر از TypeScript استفاده کنید، تایپ همان مشخصات (specification) است. هوش مصنوعی میداند چه چیزی مجاز است. اگر هوش مصنوعی اشتباه کند، کامپایلر بلافاصله آن را شناسایی میکند. دیگر ساعت ۲ صبح با کرش کردن در محیط عملیاتی (production) مواجه نمیشوید، بلکه یک خط قرمز در ادیتور خود میبینید.
تایپها سرعت شما را کم نمیکنند. در دنیای هوش مصنوعی، آنها سرعت شما را بالا میبرند. آنها مانند حفاظ عمل میکنند تا بتوانید به کدهای تولیدشده اعتماد کنید.
تایپهای خود را با هدف مشخص بنویسید:
• بهجای استفاده از چندین boolean از unionها استفاده کنید. وضعیتی مانند "loading" | "error" | "ready" بهتر از سه پرچم (flag) است که ممکن است با هم در تضاد باشند.
• تایپهای دامنه (domain types) خود را نامگذاری کنید. برای نشان دادن هدف خود از "type Cents = number" استفاده کنید.
• از "any" دوری کنید. در عوض از "unknown" استفاده کرده و سپس آن را محدود (narrow down) کنید. استفاده از "any" حفرهای در شبکه ایمنی شما ایجاد میکند.
• اجازه دهید inference کارش را انجام دهد. نیازی نیست همه چیز را برچسبگذاری کنید. فقط مرزهای خود مانند امضای توابع را مشخص کنید و اجازه دهید بقیه موارد به صورت خودکار پیش بروند.
TypeScript کاری فراتر از شناسایی غلطهای تایپی انجام داد. این زبان قراردادهای اجباری (enforced contracts) ایجاد کرد. این قراردادها امکان بازنویسی بدون ترس و استفاده از ابزارهای هوش مصنوعی قابل اعتماد را فراهم میکنند.
ما استفاده از تایپها را برای جلوگیری از باگها شروع کردیم. اما به این دلیل به استفاده از آنها ادامه میدهیم که آنها زیربنای هر چیز دیگری هستند.
منبع: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-12m8
