TypeScript 6.0 שוברת בתכנון

TypeScript 6.0 כאן והיא משנה הכל. גרסה זו היא השינוי המשמעותי ביותר מאז גרסה 2.x. אם אתם מסתמכים על הגדרות legacy, ה-build הבא שלכם כנראה ייכשל.

שלושה שינויים מרכזיים ישברו את הקוד שלכם:

למה זה חשוב:

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 שלכם:

  1. בצעו Audit ל-config שלכם אל תשאירו הגדרות למקרה. הוסיפו ערכים מפורשים עבור strict, target, ו-module ב-tsconfig.json שלכם לפני השדרוג.

  2. נעלו את הגרסה שלכם קבעו (Pin) את גרסת ה-TypeScript ב-package.json שלכם. בדקו את ה-build הנוכחי שלכם בגרסה הקיימת לפני שתעברו ל-6.0.

  3. השתמשו ב-feature branch התקינו את TypeScript 6.0 ב-branch חדש. עדכנו את ה-target ל-ES2025 והגדירו את סוג ה-module שלכם בצורה ברורה.

  4. תקנו טיפוסים באופן הדרגתי הריצו את הקומפיילר ללא הפקת קבצים (emitting files) כדי לראות את כל השגיאות. התמקדו תחילה בשגיאות של strictNullChecks ו-implicit any.

  5. בדקו הכל הריצו את כל סדרת הבדיקות (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