Lecții din modul (1/2)
Clase și modificatori
TypeScript extinde clasele standard ES6 cu funcții puternice de programare orientată pe obiecte (OOP), cum ar fi tastarea statică, modificatorii de acces și proprietățile parametrului scurt.
Clase și modificatori de acces
În TypeScript, puteți controla vizibilitatea membrilor clasei, proprietăților și metodelor folosind trei cuvinte cheie principale:
public(implicit): membrul este accesibil de oriunde.private: membrul este accesibil doar în cadrul clasei care îl definește.protected: membrul este accesibil în cadrul clasei și subclaselor acesteia (moștenire).
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;
}
}Proprietățile parametrilor
TypeScript oferă o sintaxă scurtă pentru a declara și inițializa un membru al clasei direct în constructor. Prin prefixarea unui parametru de constructor cu un modificator de acces, proprietatea este creată și atribuită automat:
// This syntax does exactly the same as the previous example!
class Animal {
constructor(
public name: string,
private age: number,
) {}
}Implementarea interfețelor
O clasă poate implementa una sau mai multe interfețe folosind cuvântul cheie implements. Acest lucru asigură că clasa aderă la un contract specific prin definirea tuturor metodelor și proprietăților necesare:
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.`);
}
}Moștenire și super
TypeScript acceptă pe deplin moștenirea clasei. O clasă poate extinde o altă clasă folosind cuvântul cheie extends. Dacă subclasa definește un constructor, trebuie să apeleze constructorul clasei de bază folosind funcția super() înainte de a accesa this:
class Person {
constructor(public name: string) {}
}
class Student extends Person {
constructor(
name: string,
public grade: number,
) {
super(name); // Calls the Person constructor
}
}Încercați-l singur
Exercițiul 1: Clasa de mașini și Modificator privat
Declarați o clasă numită Car. Trebuie să aibă o proprietate a modelului (șir) definită în constructor, o proprietate privată de kilometraj (număr) inițializată la 0, o metodă publică drive(miles: number): void care crește kilometrajul cu mile și un getter sau metoda getMileage(): număr care returnează kilometrajul.
Afișează indiciu
Utilizați kilometraj privat: număr = 0; pentru a face variabila privată și constructor(model public numai pentru citire: șir) {} ca prescurtare.
Soluție disponibilă după 3 încercări
Exercițiul 2: Clasa de interfață și cerc
Completați codul prin implementarea clasei Circle care implementează interfața Shape. Clasa trebuie să aibă o proprietate de rază doar în citire (număr) setată prin constructor și să implementeze getArea(): număr (returnând Math.PI * rază * rază).
Afișează indiciu
Utilizați implementa Shape pe clasa Circle și definiți metoda getArea(): number.
Soluție disponibilă după 3 încercări
Exercițiul 3: Clasa de vehicule abstracte și subclasa de motociclete
Declarați o clasă numită Motocicletă care extinde clasa abstractă Vehicul. Trebuie să implementeze metoda start() pentru a returna șirul „Motorcycle” urmat de make (this.make) și „start”.
Afișează indiciu
Utilizați clasa Motocicletă extinde Vehicul și implementați metoda start(): șir care returnează șirul corect.
Soluție disponibilă după 3 încercări
Exercițiul 4: Proprietățile parametrilor și moștenirea
Creați o clasă numită Employee care definește un ID de proprietate numai în citire (număr) și un nume de proprietate publică (șir) folosind prescurtarea constructorului. Apoi, creați o clasă Developer care extinde Employee și adaugă un departament de proprietate publică (șir) prin intermediul constructorului.
Afișează indiciu
Utilizați super(id, nume) în constructorul dezvoltatorului și utilizați departamentul public pentru a defini proprietatea prin constructor.
Soluție disponibilă după 3 încercări