דילוג לתוכן המרכזי
מודול 7 · שיעור 1 מתוך 213/14 בקורס~12 min
שיעורי מודול (1/2)

תצורה עם tsconfig.json

הקובץ tsconfig.json מציין את ספריית הבסיס של פרויקט TypeScript ואת אפשרויות המהדר הנדרשות לבניית הפרויקט.

בכל פעם שאתה מפעיל את tsc בספריית פרויקט, המהדר מחפש את הקובץ הזה כדי להנחות את התנהגות ההידור שלו.


מבנה של קובץ tsconfig.json

קובץ תצורה טיפוסי נראה כך:

Code
{
  "compilerOptions": {
    "target": "es2022",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

המאפיינים העיקריים הם:

  • compilerOptions: הגדרות עבור המהדר.
  • include: מציין את הקבצים או התיקיות להידור.
  • exclude: מציין את הקבצים או התיקיות שיש להתעלם מהם במהלך ההידור.

אפשרויות מפתח מהדר

להלן כמה מההגדרות החשובות ביותר שכדאי לדעת:

  1. target: מציין את גרסת הפלט של JavaScript על ידי המהדר (לדוגמה, es5, es6/es2015, es2020, esnext).
  2. module: מציין את מערכת המודולים המשמשת בקוד הקומפילציה (לדוגמה, commonjs, esnext, node16).
  3. strict: מאפשר חבילה רחבה של התנהגויות קפדניות של בדיקת סוגים. מומלץ מאוד להגדיר זאת ל-true לבטיחות סוג מקסימלית. זה מאפשר אפשרויות כמו:
    • noImplicitAny: מעלה שגיאה בביטויים והצהרות עם סוג any משתמע כאשר לא מסופק הערת סוג.
    • strictNullChecks: מונע הקצאת null או undefined לסוגים שאינם כוללים אותם במפורש באיחוד שלהם.

נסה זאת בעצמך

תרגיל 1: טיפול ב-strictNullChecks

פעילות גופנית#ts.m7.l1.e1
ניסיונות: 0טוען...

תחת האפשרות strictNullChecks: true ב-tsconfig.json, לא נוכל להקצות null או undefined לסוגים פרימיטיביים. הכריז על פונקציה בשם parseAge שמקבלת קלט מסוג string | null ומחזירה מספר אם הקלט אינו null והוא מספר שלם חוקי, אחרת הוא מחזיר 0. טפל במפורש ב-null כדי לעבור קומפילציה קפדנית.

טוען עורך...
הצג רמז

בדוק אם הקלט הוא null בתחילת הפונקציה והחזר 0 מיד לפני עיבוד המחרוזת.

הפתרון זמין לאחר 3 ניסיונות

תרגיל 2: הקלדה קפדנית ללא כל מרומז

פעילות גופנית#ts.m7.l1.e2
ניסיונות: 0טוען...

תחת noImplicitAny: true, כל פרמטר שלא ניתן להסיק מהסוג שלו חייב להיות מוקלד במפורש. צור פונקציה בשם processItems שמקבלת פריטי מערך (מערך של מספרים) ופונקציית callback שלוקחת מספר בודד כארגומנט ולא מחזירה דבר. הקפד לא להשתמש באף אחד והקלד הכל במפורש.

טוען עורך...
הצג רמז

הכריז על הפונקציה עם פונקציית חתימה processItems(items: number[], callback: (item: number) => void): void.

הפתרון זמין לאחר 3 ניסיונות