Salt la conținutul principal
Modulul 4 · Lecția 1 din 27/14 în curs~15 min
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).
TS
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:

TS
// 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:

TS
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:

TS
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

Exercițiu#ts.m4.l1.e1
Încercări: 0Se încarcă…

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.

Se încarcă editorul...
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

Exercițiu#ts.m4.l1.e2
Încercări: 0Se încarcă…

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ă).

Se încarcă editorul...
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

Exercițiu#ts.m4.l1.e3
Încercări: 0Se încarcă…

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”.

Se încarcă editorul...
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

Exercițiu#ts.m4.l1.e4
Încercări: 0Se încarcă…

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.

Se încarcă editorul...
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