interface

Nazwany opis kształtu obiektu, który można rozszerzać i łączyć.

Na tej stronie

Przykład

#
TypeScript
interface Course {
  id: number
  title: string
  modules: number
  describe(): string
}

const html: Course = {
  id: 1,
  title: 'HTML i CSS',
  modules: 11,
  describe() {
    return `${this.title}: ${this.modules} modułów`
  }
}

console.log(html.describe())
Wynik
HTML i CSS: 11 modułów

Definicja i zastosowanie

#

Interfejs nadaje nazwę kształtowi obiektu: wymienia jego pola i metody wraz z typami. Obiekt jest zgodny z interfejsem, jeśli ma wymagane właściwości o pasujących typach. Nie musi być tworzony żadną specjalną składnią.

Interfejsy można rozszerzać słowem extends, budując bardziej szczegółowe typy z ogólnych. Klasy mogą je implementować przez implements, co gwarantuje, że mają wymagane metody.

Szczególną cechą interfejsów jest łączenie deklaracji: dwa interfejsy o tej samej nazwie zlewają się w jeden. Dzięki temu biblioteki pozwalają rozszerzać swoje typy z zewnątrz, na przykład dodawać pola do obiektu Window.

Składnia

#
Składnia
interface Nazwa {
  pole: typ
  metoda(param: typ): typ
}

Więcej przykładów

#
Łączenie deklaracji
TypeScript
interface Settings {
  theme: 'dark' | 'light'
}

interface Settings {
  sounds: boolean
}

const settings: Settings = { theme: 'dark', sounds: true }
console.log(Object.keys(settings))
Wynik
['theme', 'sounds']

Dobre praktyki

#
  • Do opisu obiektów i kontraktów klas interface jest naturalnym wyborem. Do unii, krotek i typów złożonych użyj type.
  • Nazywaj interfejsy od tego, czym obiekt jest (User, Course), bez przedrostka I.

Powiązane hasła

#

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