نسخه ۵٫۵ تایپ اسکریپت به تازگی منتشر شده است. در این مقاله قصد داریم تا تغییراتی که در این نسخه صورت گرفته است را باهم بررسی کنیم.
نسخه ۵٫۵ تایپ اسکریپت یک ویژگی مهم به نام Inferred Type Predicates را معرفی میکند. این ویژگی با استنتاج خودکار تایپ بر اساس توابع فیلتر سفارشی، بررسی تایپ را برای توسعهدهندگان سادهتر میکند.
در نسخههای قبلی، تایپ اسکریپت به اندازه کافی هوشمند نبود که بتواند تایپهای دقیق را پس از عملیاتی مانند فیلتر کردن مقادیر undefined
از یک آرایه استنتاج کند. اما اکنون، تایپ اسکریپت میتواند یک type predicate را استنتاج نماید، که امکان بررسی دقیقتر تایپ را فراهم میکند.
در ادامه یک مثال کد داریم که نحوه عملکرد inferred type predicates در نسخه ۵٫۵ تایپ اسکریپت را نشان میدهد:
function isBirdReal(bird: Bird | undefined): bird is Bird { return bird !== undefined; } const birds: (Bird | undefined)[] = getBirds(); const realBirds = birds.filter(isBirdReal); realBirds.forEach(bird => { bird.sing(); // No error - TypeScript knows bird is of type Bird });
به طور کلی، Inferred Type Predicates تایپ اسکریپت را برای کنترل تایپ در سناریوهای پیچیده کارآمدتر میکند.
نسخه ۵٫۵ تایپ اسکریپت Control Flow Narrowing را برای دسترسیهایی که دائماً ایندکس میشوند، بهبود میبخشد. این بهبود به تایپ اسکریپت اجازه میدهد تا بررسیهای تایپ در ویژگیهای آبجکت را بهطور مؤثرتری به خاطر بسپارد.
در نسخههای قبلی، تایپ اسکریپت هنگام دسترسی به ویژگیهای آبجکت توسط keyهای داینامیک، مسیر اطلاعات تایپ را از دست میداد. اما اکنون، این اطلاعات را حفظ میکند. این کار به جلوگیری از ساخت متغیرهای اضافی کمک میکند و کد را تمیز نگه میدارد.
در ادامه یک مثال ساده داریم که این بهبود نشان میدهد:
const data: { [key: string]: unknown } = fetchData(); if (typeof data["name"] === "string") { data["name"]; // TypeScript knows this is a string }
Control Flow Narrowing برای دسترسیهایی که دائماً ایندکس میشوند، بررسیهای هوشمندانهتر و بصریتر را تضمین میکند و کد تایپ اسکریپتی ما را کارآمدتر کرده و نوشتن آن را آسانتر مینماید.
Set
ECMAScript چیست؟تایپ اسکریپت در نسخه ۵٫۵، پشتیبانی از متدهای جدید Set
ECMAScript را معرفی میکند. این متدها کار با مجموعهها را با افزودن عملکرد برای union
، intersection
، difference
و symmetric difference
بهبود میبخشند.
در ادامه چهار متد جدید را در یک مثال بررسی میکنیم:
const fruits = new Set(['apple', 'banana']); const otherFruits = new Set(['banana', 'orange']); // Union const allFruits = fruits.union(otherFruits); // {'apple', 'banana', 'orange'} // Intersection const commonFruits = fruits.intersection(otherFruits); // {'banana'} // Difference const uniqueFruits = fruits.difference(otherFruits); // {'apple'} // Symmetric Difference const diffFruits = fruits.symmetricDifference(otherFruits); // {'apple', 'orange'}
union
: المنتهای هر دو مجموعه را باهم ترکیب میکند.intersection
: المنتهای مشترک را در هر دو مجموعه پیدا میکند.difference
: المنتهایی را که در مجموعه اول وجود دارند اما در مجموعه دوم نیستند، پیدا میکند.symmetric difference
: المنتهایی را پیدا میکند که در یک مجموعه هستند اما در هر دو مجموعه نیستند.این متدها عملیات روی مجموعهها را سادهتر میکنند و عمل کدنویسی را بصریتر و کارآمدتر میکنند.
نسخه ۵٫۵ تایپ اسکریپت یک ویژگی جدید قدرتمند را معرفی میکند که آن Type Imports در JSDoc میباشد. این ویژگی به توسعهدهندگان جاوااسکریپت کمک زیادی کرده و به آنها اجازه میدهد تا تایپهای تایپ اسکریپت را در JSDoc commentهای خود وارد کنند.
در مثال زیر نحوه import کردن تایپها با استفاده از JSDoc را مشاهده میکنیم:
/** * @typedef {import('some-module').SomeType} SomeType */ /** * @param {SomeType} param - The parameter of SomeType */ function exampleFunction(param) { // function body }
به طور کلی، type imports در JSDoc با استفاده از سیستم تایپ قدرتمند تایپ اسکریپت، توسعه جاوااسکریپت را قویتر و کارآمدتر میکند.
Isolated Declarationها در نسخه ۵٫۵ تایپ اسکریپت نحوه تولید فایلهای تعریفی را بهبود میبخشد و توسعه را کارآمدتر میکند.
build
: میتوانیم پروژهها را به صورت موازی بسازیم و روند توسعه را سرعت ببخشیم.در ادامه یک مثال ساده داریم:
export function add(a: number, b: number): number { return a + b; }
با isolated declarationها، تایپ اسکریپت اطمینان حاصل میکند که تایپ بازگشتی صریح است تا کد ما قابلیت اطمینان بالاتری داشته باشد.
build
را در پروژههای بزرگ افزایش میدهد.isolated declarationها، توسعه تایپ اسکریپت را به شکل قابل توجهی تقویت میکنند و همین موضوع کمک میکند تا قابلیت نگهداری کد بالاتر برود و فرآیند build
سریعتر شود.
نسخه ۵٫۵ تایپ اسکریپت پیشرفتهای قابل توجهی را در رابطه با قابلیت اطمینان ویرایشگر و watch mode به ارمغان میآورد و بهرهوری توسعهدهندگان را افزایش میدهد.
تاثیری که این بهبودها بر روی بهرهوری توسعهدهندگان میگذارد عبارتند از:
با این بهروزرسانیها، نسخه ۵٫۵ تایپ اسکریپت به طور قابل توجهی روند توسعه را سادهتر کرده و آن را کارآمدتر و قابل اعتمادتر میکند.
نسخه ۵٫۵ تایپ اسکریپت چندین بهینهسازی عملکرد را معرفی میکند که به طور قابل توجهی سرعت توسعه را افزایش میدهد.
build
سریعتر:
build
دست پیدا کرده است.build
را کوتاهتر میکنند و سربار حافظه را در پروژههای بزرگ کاهش میدهند.TranspileModule
و TranspileDeclaration
اکنون از بررسی کامل تایپ اجتناب میکنند و در نتیجه سرعت ساخت ابزارهایی که از این APIها استفاده میکنند دو برابر میشود.build
سریعتر و خرابیهای کمتری را تجربه میکنند و جریان کار مداوم را تضمین مینمایند.با این بهینهسازیها، نسخه ۵٫۵ تایپ اسکریپت معیار جدیدی را در عملکرد توسعه ایجاد میکند و آن را به یک ارتقاء ضروری برای کاربران تایپ اسکریپت تبدیل مینماید.
۵۰ درصد تخفیف ویژه پاییز فرانت کست تا پایان هفته
کد تخفیف: atm