שיעורי מודול (1/2)
תצורה עם tsconfig.json
הקובץ tsconfig.json מציין את ספריית הבסיס של פרויקט TypeScript ואת אפשרויות המהדר הנדרשות לבניית הפרויקט.
בכל פעם שאתה מפעיל את tsc בספריית פרויקט, המהדר מחפש את הקובץ הזה כדי להנחות את התנהגות ההידור שלו.
מבנה של קובץ tsconfig.json
קובץ תצורה טיפוסי נראה כך:
{
"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: מציין את הקבצים או התיקיות שיש להתעלם מהם במהלך ההידור.
אפשרויות מפתח מהדר
להלן כמה מההגדרות החשובות ביותר שכדאי לדעת:
target: מציין את גרסת הפלט של JavaScript על ידי המהדר (לדוגמה,es5,es6/es2015,es2020,esnext).module: מציין את מערכת המודולים המשמשת בקוד הקומפילציה (לדוגמה,commonjs,esnext,node16).strict: מאפשר חבילה רחבה של התנהגויות קפדניות של בדיקת סוגים. מומלץ מאוד להגדיר זאת ל-trueלבטיחות סוג מקסימלית. זה מאפשר אפשרויות כמו:noImplicitAny: מעלה שגיאה בביטויים והצהרות עם סוגanyמשתמע כאשר לא מסופק הערת סוג.strictNullChecks: מונע הקצאתnullאוundefinedלסוגים שאינם כוללים אותם במפורש באיחוד שלהם.
נסה זאת בעצמך
תרגיל 1: טיפול ב-strictNullChecks
תחת האפשרות strictNullChecks: true ב-tsconfig.json, לא נוכל להקצות null או undefined לסוגים פרימיטיביים. הכריז על פונקציה בשם parseAge שמקבלת קלט מסוג string | null ומחזירה מספר אם הקלט אינו null והוא מספר שלם חוקי, אחרת הוא מחזיר 0. טפל במפורש ב-null כדי לעבור קומפילציה קפדנית.
הצג רמז
בדוק אם הקלט הוא null בתחילת הפונקציה והחזר 0 מיד לפני עיבוד המחרוזת.
הפתרון זמין לאחר 3 ניסיונות
תרגיל 2: הקלדה קפדנית ללא כל מרומז
תחת noImplicitAny: true, כל פרמטר שלא ניתן להסיק מהסוג שלו חייב להיות מוקלד במפורש. צור פונקציה בשם processItems שמקבלת פריטי מערך (מערך של מספרים) ופונקציית callback שלוקחת מספר בודד כארגומנט ולא מחזירה דבר. הקפד לא להשתמש באף אחד והקלד הכל במפורש.
הצג רמז
הכריז על הפונקציה עם פונקציית חתימה processItems(items: number[], callback: (item: number) => void): void.
הפתרון זמין לאחר 3 ניסיונות