שיעורי מודול (1/2)
כיתות ומתאמים
TypeScript מרחיב מחלקות ES6 סטנדרטיות עם תכונות עוצמתיות של תכנות מונחה עצמים (OOP), כגון הקלדה סטטית, משנה גישה ומאפייני פרמטרים קצרים.
מחלקות ומשנות גישה
ב-TypeScript, אתה יכול לשלוט בנראות של חברי כיתה, מאפיינים ושיטות באמצעות שלוש מילות מפתח עיקריות:
public(ברירת מחדל): החבר נגיש מכל מקום.private: החבר נגיש רק בתוך המחלקה המגדירה אותו.protected: החבר נגיש בתוך המחלקה ותתי המחלקות שלה (ירושה).
class Animal {
public name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public getAge(): number {
return this.age;
}
}מאפייני פרמטר
TypeScript מציע תחביר קיצור להכרזה ולאתחול של חבר בכיתה ישירות בבנאי. על ידי הקדמת פרמטר בנאי עם משנה גישה, המאפיין נוצר ומוקצה באופן אוטומטי:
// This syntax does exactly the same as the previous example!
class Animal {
constructor(
public name: string,
private age: number,
) {}
}הטמעת ממשקים
כיתה יכולה ליישם ממשק אחד או יותר באמצעות מילת המפתח implements. זה מבטיח שהכיתה תעמוד בחוזה ספציפי על ידי הגדרת כל השיטות והמאפיינים הנדרשים:
interface Flyable {
fly(altitude: number): void;
}
class Bird implements Flyable {
constructor(public name: string) {}
fly(altitude: number): void {
console.log(`${this.name} is flying at ${altitude} meters.`);
}
}ירושה וsuper
TypeScript תומך באופן מלא בהורשה של מחלקות. כיתה יכולה להרחיב כיתה נוספת באמצעות מילת המפתח extends. אם תת-המחלקה מגדירה בנאי, עליה לקרוא לבנאי מחלקת הבסיס באמצעות הפונקציה super() לפני הגישה ל-this:
class Person {
constructor(public name: string) {}
}
class Student extends Person {
constructor(
name: string,
public grade: number,
) {
super(name); // Calls the Person constructor
}
}נסה זאת בעצמך
תרגיל 1: כיתת רכב ושינוי פרטי
הכריז על כיתה בשם מכונית. חייב להיות לו מאפיין מודל לקריאה בלבד (מחרוזת) המוגדרת בקונסטרוקטור, מאפיין קילומטראז' פרטי (מספר) מאותחל ל-0, כונן שיטה ציבורית (מיילים: מספר): void שמגדיל קילומטראז' לפי מיילים, ו-getter או שיטה getMileage(): מספר שמחזיר קילומטראז'.
הצג רמז
השתמש בקילומטראז' פרטי: מספר = 0; כדי להפוך את המשתנה לפרטי, ו-construction(public readonly model: string) {} בתור קיצור.
הפתרון זמין לאחר 3 ניסיונות
תרגיל 2: ממשק צורה וכיתת מעגל
השלם את הקוד על ידי הטמעת המחלקה Circle המיישמת את ממשק Shape. המחלקה חייבת להיות בעלת מאפיין רדיוס לקריאה בלבד (מספר) שהוגדר באמצעות בנאי, וליישם getArea(): number (מחזיר Math.PI * רדיוס * רדיוס).
הצג רמז
השתמש ביישום Shape במחלקה Circle והגדר את שיטת getArea(): number.
הפתרון זמין לאחר 3 ניסיונות
תרגיל 3: כיתת רכב מופשטת ותת כיתת אופנועים
הכריז על מחלקה בשם אופנוע שמרחיבה את המחלקה המופשטת רכב. עליו ליישם את שיטת start() כדי להחזיר את המחרוזת 'Motorcycle ' ואחריה ה-make (this.make) ו-'started'.
הצג רמז
השתמש במחלקה Motorcycle extends Vehicle והטמיע את שיטת start(): string שמחזירה את המחרוזת הנכונה.
הפתרון זמין לאחר 3 ניסיונות
תרגיל 4: פרמטר מאפיינים וירושה
צור מחלקה בשם Employee שמגדירה מזהה מאפיין לקריאה בלבד (מספר) ושם מאפיין ציבורי (מחרוזת) באמצעות הקיצור של הבנאי. לאחר מכן, צור מפתח מחלקה שמרחיב את Employee ומוסיף מחלקת נכסים ציבוריים (מחרוזת) באמצעות הקונסטרוקטור.
הצג רמז
השתמש ב- super(id, name) בבנאי המפתח והשתמש במחלקה הציבורית כדי להגדיר את המאפיין באמצעות הבנאי.
הפתרון זמין לאחר 3 ניסיונות