TypeScript 6.0 שוברת בתכנון
TypeScript 6.0 כאן והיא משנה הכל. גרסה זו היא השינוי המשמעותי ביותר מאז גרסה 2.x. אם אתם מסתמכים על הגדרות legacy, ה-build הבא שלכם כנראה ייכשל.
שלושה שינויים מרכזיים ישברו את הקוד שלכם:
- strict mode מופעל כעת כברירת מחדל.
- התמיכה ב-ES5 וב-ES3 הוסרה.
- module resolution מוגדר כעת כברירת מחדל ל-ESNext.
למה זה חשוב:
Strict Mode בעבר, הייתם צריכים לבחור להפעיל את ה-strict mode. כעת, זהו הסטנדרט. כ-70% ממאגרי הקוד יחוו builds אדומים באופן מיידי. תיתקלו בשגיאות עבור מאפיינים (properties) שלא אותחלו, טיפוסי implicit any, וערכי null שלא נבדקו.
הסרת התמיכה ב-ES5
לא ניתן עוד להגדיר target ל-ES5 או ES3 ב-tsconfig.json שלכם. ברירת המחדל החדשה היא ES2025. אם אתם צריכים לתמוך בדפדפנים ישנים, עליכם להוסיף כלי נפרד כמו Babel ל-pipeline שלכם.
Module Resolution ברירת המחדל היא כבר לא CommonJS. כעת היא ESNext. אם פרויקט ה-Node.js שלכם מסתמך על התנהגות CommonJS משתמעת, עליכם להגדיר את הגדרת ה-module במפורש ב-config שלכם.
איך לבצע מיגרציה מבלי לשבור את ה-pipeline שלכם:
בצעו Audit ל-config שלכם אל תשאירו הגדרות למקרה. הוסיפו ערכים מפורשים עבור strict, target, ו-module ב-
tsconfig.jsonשלכם לפני השדרוג.נעלו את הגרסה שלכם קבעו (Pin) את גרסת ה-TypeScript ב-
package.jsonשלכם. בדקו את ה-build הנוכחי שלכם בגרסה הקיימת לפני שתעברו ל-6.0.השתמשו ב-feature branch התקינו את TypeScript 6.0 ב-branch חדש. עדכנו את ה-target ל-ES2025 והגדירו את סוג ה-module שלכם בצורה ברורה.
תקנו טיפוסים באופן הדרגתי הריצו את הקומפיילר ללא הפקת קבצים (emitting files) כדי לראות את כל השגיאות. התמקדו תחילה בשגיאות של strictNullChecks ו-implicit any.
בדקו הכל הריצו את כל סדרת הבדיקות (test suite) שלכם. TypeScript תופסת שגיאות טיפוסים, אך הבדיקות שלכם תופסות שגיאות לוגיקה שנגרמו מההחמרה (strictness) החדשה.
TypeScript 6.0 היא השלב האחרון לפני כתיבה מחדש בגרסה 7.0. גרסה 7.0 תשתמש ב-core מבוסס Go. המשמעות היא שתמיכה ב-legacy תיעלם לחלוטין.
מודרניזו את מאגר הקוד שלכם עכשיו כדי למנוע משבר בהמשך.
מקור: https://dev.to/davekurian/typescript-60-launches-strict-mode-by-default-and-drops-es5-support-n31