TypeScript ניצחה. הנה מה שהיא הביאה לנו.
הוויכוח נגמר. מפתחים כבר לא מתווכחים על השימוש ב-TypeScript. פרויקטים חדשים ב-frontend משתמשים בה כברירת מחדל.
הטיעון המקורי היה לתפוס שגיאות הקלדה לפני שהן מפילות את האפליקציה שלכם. זה לא היתרון האמיתי. הערך האמיתי טמון במשהו עמוק הרבה יותר.
TypeScript יוצרת תיעוד שלעולם לא מתיישן. חתימת פונקציה (function signature) אומרת לך בדיוק מה הפונקציה צריכה ומה היא מחזירה. אם תוסיפו אפשרות חדשה ל-type, הקומפיילר יראה לכם כל מקום שבו עליכם לעדכן את הקוד. הערה (comment) הייתה פשוט יושבת שם ושקרית לכם.
Refactoring הופך לבטוח. בקוד ללא טיפוסים (untyped code), שינוי שם של שדה מרגיש כמו הימור. אתם מחפשים מחרוזות (strings) ומקווים לטוב. ב-TypeScript, אתם משנים את ה-type והקומפיילר נותן לכם רשימת משימות של כל שורה שבורה. אתם מפסיקים לפחד מה-codebase שלכם.
טיפוסים עוזרים לכם גם להשתמש ב-AI.
כלי AI שמנחש קוד ב-JavaScript הוא מסוכן. הוא עושה טעויות שגורמות לשגיאות ב-production. ב-TypeScript, ה-type משמש כ-spec. ה-AI יודע מה מותר. אם ה-AI טועה, הקומפיילר תופס זאת מיד. טיפוסים הופכים "קוד שנראה הגיוני" ל"קוד נכון".
אנשים היו אומרים שטיפוסים מאטים אתכם. בעולם של AI, טיפוסים מאיצים אתכם. הם משמשים כמחסומים (guardrails). אתם יכולים לקבל קוד גנרטיבי בביטחון במקום לבדוק כל שורה ידנית.
כתבו טיפוסים טובים יותר עם הכללים האלה:
- השתמשו ב-unions במקום במספר משתני booleans. סטטוס כמו
"loading" | "error" | "ready"מונע מצבים בלתי אפשריים. - תנו שמות ל-domain types שלכם. שימוש ב-
type Cents = numberהופך את הכוונה שלכם לברורה. - הימנעו מ-
any. השתמשו ב-unknownוצמצמו אותו (narrow it down) במקום זאת.anyשובר את רשת הביטחון שלכם. - תנו ל-inference לעבוד. אתם לא חייבים לתייג הכל. תייגו את חתימות הפונקציות ואת ה-APIs שאתם מייצאים (exported APIs), ואז תנו לשאר לזרום.
TypeScript לא רק תפסה שגיאות הקלדה. היא הפכה codebases למערכות של חוזים אכיפים (enforced contracts). החוזים האלה מאפשרים refactoring ללא פחד וכלי AI אמינים.
התחלנו להשתמש בטיפוסים כדי לעצור באגים. אנחנו ממשיכים להשתמש בהם כי הם הבסיס לכל השאר.
מקור: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-53lo
