implements

Deklaracja, że klasa spełnia kontrakt opisany interfejsem.

Na tej stronie

Przykład

#
TypeScript
interface Scorable {
  score(): number
}

class Quiz implements Scorable {
  constructor(private correct: number, private total: number) {}

  score(): number {
    return Math.round((this.correct / this.total) * 100)
  }
}

const quiz = new Quiz(8, 10)
console.log(`Wynik: ${quiz.score()}%`)
Wynik
Wynik: 80%

Definicja i zastosowanie

#

Słowo implements po nazwie klasy mówi kompilatorowi, że klasa musi mieć wszystkie pola i metody z podanego interfejsu. Jeśli czegoś zabraknie albo typy się nie zgadzają, pojawi się błąd.

To sprawdzenie dotyczy tylko typów: implements nie dziedziczy żadnego kodu. Klasa musi sama zaimplementować wszystkie metody. Do dziedziczenia kodu służy extends między klasami.

Jedna klasa może implementować kilka interfejsów, co pozwala opisywać niezależne możliwości, na przykład Serializable i Comparable.

Składnia

#
Składnia
class Nazwa implements Interfejs1, Interfejs2 {
  …
}

Więcej przykładów

#
Brakująca metoda
TypeScript
class Exam implements Scorable {}
// Błąd: Class 'Exam' incorrectly implements interface 'Scorable'.
//   Property 'score' is missing in type 'Exam' but required in type 'Scorable'.

Dobre praktyki

#
  • implements nie zmienia typów wewnątrz klasy. Parametry metod i tak musisz otypować w samej klasie.
  • Interfejsy opisujące możliwości (co obiekt umie) łączą się lepiej niż głębokie dziedziczenie klas.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.