טיפוסים בסיסיים
הטיפוסים הבסיסיים של TypeScript הם הטיפוסים שכבר מכירים מ-JavaScript: מחרוזת, מספר, בוליאני, ועוד כמה מיוחדים. ההבדל הוא שעכשיו אפשר להצהיר עליהם.
הצהרת טיפוס
let userName: string = 'דנה';
let age: number = 29; // שלמים ועשרוניים: אותו טיפוס
let isAdmin: boolean = false;
let big: bigint = 9007199254740993n;
הטיפוס נכתב אחרי נקודתיים, באותיות קטנות. String באות גדולה הוא משהו אחר (אובייקט עוטף) ולא משתמשים בו לטיפוסים.
הסקת טיפוסים (Inference)
ברוב המקרים לא צריך לכתוב את הטיפוס בכלל. TypeScript מסיקה אותו מהערך:
let city = 'חיפה'; // string
const year = 2026; // 2026 (const: הטיפוס הוא הערך המדויק)
let prices = [10, 20]; // number[]
כלל אצבע: נותנים ל-TypeScript להסיק במשתנים, וכותבים טיפוסים במקומות ש"נכנסים" לקוד: פרמטרים של פונקציות, ומבני נתונים מרכזיים.
null ו-undefined
עם strict, null ו-undefined הם טיפוסים נפרדים. משתנה מסוג string לא יכול להיות null, אלא אם אמרתם זאת במפורש:
let nickname: string | null = null; // מחרוזת או null
nickname = 'דני';
function greet(name: string) {
return name.toUpperCase();
}
greet(nickname);
// Argument of type 'string | null' is not assignable to parameter of type 'string'.
זו אחת היכולות הכי חשובות של TypeScript: היא מכריחה אתכם לטפל במקרה של "אין ערך", שהוא מקור הבאגים הנפוץ ביותר ב-JavaScript.
any ו-unknown
| טיפוס | משמעות | מתי |
|---|---|---|
any | מכבה את הבדיקה לגמרי: הכול מותר | כמעט אף פעם. זו דלת אחורית |
unknown | "לא ידוע עדיין": אסור להשתמש לפני שבודקים | נתונים מבחוץ: JSON, קלט משתמש, שגיאות |
const data: unknown = JSON.parse('{"count": 3}');
data.count;
// 'data' is of type 'unknown'.
if (typeof data === 'object' && data !== null && 'count' in data) {
console.log(data.count); // ✅ עכשיו מותר
}
void ו-never
// void: פונקציה שלא מחזירה ערך
function logMessage(message: string): void {
console.log(message);
}
// never: פונקציה שלעולם לא מסתיימת כרגיל
function fail(message: string): never {
throw new Error(message);
}
טיפוס של ערך מדויק (Literal)
let direction: 'left' | 'right' = 'left';
direction = 'up';
// Type '"up"' is not assignable to type '"left" | "right"'.
זה אחד הכלים השימושיים ביותר ב-TypeScript, ונחזור אליו בהרחבה בשיעור על Union ו-Narrowing.
הכרזת טיפוס (as) - בזהירות
const input = document.querySelector('#email') as HTMLInputElement;
input.value = '[email protected]';
as אומר ל-TypeScript "סמכי עליי". היא לא בודקת, ואם טעיתם, הקוד יישבר בזמן ריצה. משתמשים בו רק כשאתם באמת יודעים יותר מהמהדר, כמו כאן: יודעים שהאלמנט הוא שדה קלט.
סיכום
string,number,boolean,bigint- באותיות קטנות.- נותנים להסקה לעבוד, וכותבים טיפוסים בגבולות (פרמטרים, מבנים).
- עם
strict,nullחייב להיות מוצהר:string | null. unknownבמקוםany, ו-asרק כשאין ברירה.
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה ההבדל בין
anyל-unknown?הצגת התשובה
תשובה ב. unknown הוא הבחירה הבטוחה לנתונים מבחוץ.
-
let city = 'חיפה';מה הטיפוס של city?הצגת התשובה
תשובה ב. הסקה: let מקבל את הטיפוס הכללי של הערך. עם const הטיפוס היה הערך המדויק 'חיפה'.
-
איך מתירים ל-name להיות גם null?
הצגת התשובה
תשובה א. עם strict, null חייב להופיע בטיפוס במפורש.