אפשרויות tsconfig שבאמת חשובות, מקובצות לפי תפקיד: החמרת בדיקות הטיפוסים, קביעת יעד השפה והמודולים, שליטה במה שנפלט, מיפוי נתיבי import, ארגון בילדים מרובי־פרויקטים, וכיוונון הבדיקות שנותרו.
tsconfig אומר לקומפיילר אילו קבצים לכלול וכמה להיות קפדן. שתי אפשרויות עושות את רוב העבודה: target קובע את רמת הפקת ה־JavaScript, ו־strict מדליק את בדיקות הבטיחות כחבילה אחת. האפשרויות להלן הן אלה שמשנות התנהגות; דגלים שדלוקים כברירת מחדל מסומנים. גזרו את ההגדרות שלכם מבסיס, ואז דרסו רק את מה ששונה.
טבלת עזר · 55 ערכים
אפשרויות tsconfigExplained
55 of 55 rows
הקפדה
מתג ראשי: מפעיל את strictNullChecks, noImplicitAny ועוד כמה בבת אחת.
שגיאה על פרמטרים ומשתנים שאי אפשר להסיק את הטיפוס שלהם (אחרת היו any).
null ו־undefined כבר לא ניתנים להשמה לכל טיפוס; בוחרים בהם במפורש.
בודק פרמטרים של פונקציות באופן קונטרהוריאנטי; תופס טיפוסי פרמטרים לא־בטוחים בקולבקים.
בודק טיפוסים ל־bind, call ו־apply מול הפרמטרים המוצהרים של הפונקציה.
שגיאה כשלמאפיין של מחלקה אין ערך התחלתי ואינו מושם בבנאי.
מאפיין רשות { p?: T } כבר לא מקבל השמת undefined מפורשת.
מחייב את מילת המפתח override בחברים שמסתירים חבר של מחלקת הבסיס.
שגיאה על משתנים מקומיים מוצהרים שלעולם לא נקראים.
שגיאה על פרמטרים מוצהרים של פונקציות שלעולם לא נקראים.
שגיאה על משפטי ביטוי חסרי אפקט.
גישה עם נקודה אסורה למפתחות חתימת אינדקס; יש להשתמש בסוגריים מרובעים (obj["key"]).
שגיאה כשנתיב קוד אחד מחזיר ערך ואחר לא.
שגיאה כשאחד המקרים ב־switch נופל לבא אחריו בלי break.
שפה ומודולים
רמת הפקת ה־JavaScript (למשל ES2022); יעדים חדשים יותר פולטים פחות המרה לאחור.
ממשקי ה־API המובנים הזמינים (למשל ES2022, DOM, DOM.Iterable).
מערכת המודולים שנפלטת (למשל ESNext, CommonJS, NodeNext).
משתמש בכללים האמיתיים של Node: כל קובץ בוחר CJS או ESM לפי ה־package.json הקרוב ביותר, וייבוא יחסי דורש סיומת קובץ.
איך נתיבי import מפוענחים (למשל bundler, node, nodenext).
איך קובץ נחשב מודול: auto (לפי קיום import/export), legacy, או force (תמיד).
מאפשר סגנון ייבוא ברירת מחדל ממודולי CommonJS (ברירת מחדל true ברוב ההתקנות).
מאפשר ייבוא ברירת מחדל ממודולים שמייצאים רק ערכים בשם (ברמת הטיפוסים בלבד).
ייבוא נפלט בדיוק כפי שנכתב; ייבוא של טיפוסים בלבד חייב import type (TS 5).
מאפשר לייבוא לטעון קובצי .json כערכים טיפוסיים.
כולל קובצי .js כקלט לקומפילציה.
בודק טיפוסים גם בקובצי .js, קורא את הערות ה־JSDoc שלהם; גורר allowJs.
איך .tsx מקומפל: react-jsx (runtime אוטומטי), react (React.createElement), או preserve.
מגביל חבילות @types שנכללות אוטומטית לרשימה הזו; מערך ריק לא כולל כלום.
תיקיות שנסרקות לחבילות @types, במקום כל node_modules/@types במעלה העץ.
מבטיח שכל קובץ ניתן לטרנספילציה בידוד (נדרש על ידי bundlerים ו־esbuild).
פלט
לאן נכתב ה־JavaScript המקומפל.
השורש של קובצי המקור; שומר על צורת עץ הפלט יציבה.
פולט קובצי .js.map כדי שמנפים ימפו בחזרה ל־TypeScript.
מטמיע את מפת המקור כהערה בתוך קובץ ה־.js במקום קובץ .js.map.
פולט הצהרות טיפוסים .d.ts (נחוץ לספריות).
פולט קובצי .d.ts.map כדי שעורכים יקפצו מההצהרות חזרה למקור ה־TypeScript.
פולט רק קובצי .d.ts; ה־JavaScript נשאר ל־bundler (דורש declaration או composite).
עושה שימוש חוזר בעזרים כמו __rest מ־tslib במקום לפלוט אותם לכל קובץ.
מתקן for..of, spread ופירוק על איטרבילים כשהיעד קודם ל־ES2015.
מסיר הערות מה־JavaScript הנפלט.
בדיקת טיפוסים בלבד; לא נכתבים קבצים (בשימוש כש־bundler אחראי על הפלט).
נתיבים
תיקיית בסיס לפענוח מודולים לא־יחסיים.
ממפה קידומות import למיקומים, למשל { "@/*": ["src/*"] }.
מתייחס לכמה תיקיות כאל שורש וירטואלי אחד לפענוח.
מבנה פרויקט
מסמן פרויקט כבר־בנייה לצורך הפניות פרויקט (מפעיל declaration, incremental).
תלוי בפרויקטי tsconfig אחרים לבילדים מהירים ומבודדים יותר.
שומר מידע בילד כדי לדלג על בדיקה חוזרת של קבצים שלא השתנו בריצה הבאה.
בדיקות נוספות
מדלג על בדיקת הטיפוסים של קובצי .d.ts למען מהירות (ברירת מחדל true).
שגיאה על ייבוא שחולק על רישיות שם הקובץ בפועל.
גישה למערך ולאינדקס מחזירה T | undefined, לא T.
שדות מחלקה נוצרים עם Object.defineProperty במקום השמה רגילה (ברירת מחדל true ליעדי ES2022+).
מפעיל את תחביר הדקורטורים המדור גרסה שבו תלויים פריימוורקים ישנים (טרום־תקן).
מדווח שמות טיפוסים מלאים בהודעות שגיאה במקום לקצץ ארוכים.
שגיאה כשייבוא תופעות־לוואי חשוף (import "./x.css") לא מפוענח לכלום.
מאפשר נתיבי ייבוא שמסתיימים ב־.ts (דורש noEmit או emitDeclarationOnly).