W TypeScript zarówno interface
, jak i type
mogą być używane do definiowania typów obiektów, ale istnieją pewne różnice. Oto najważniejsze z nich:
- Rozszerzanie typów:
interface
pozwala na rozszerzanie innych interfejsów, używając słowa kluczowegoextends
. Z koleitype
pozwala na rozszerzanie przy użyciu operacji&
(intersection).
interface Person { name: string; } interface Employee extends Person { salary: number; }
type Person = { name: string }; type Employee = Person & { salary: number };
-
Deklaracja wielokrotna:
interface
pozwala na deklarowanie tego samego interfejsu w wielu miejscach, łącząc definicje.type
nie obsługuje tej funkcji. Zatem definicjainterface
może być rozszerzana przez kolejne deklaracje. -
Złożoność:
type
jest bardziej elastyczny niżinterface
, ponieważ może reprezentować nie tylko obiekty, ale również inne typy, takie jak unie, krotki czy aliasy dla prostych typów. -
Kompatybilność:
type
może być bardziej skomplikowany w przypadku połączeń różnych typów, aleinterface
daje lepszą czytelność i strukturę.
Podsumowując, zarówno interface
, jak i type
mają swoje zastosowanie, a wybór między nimi zależy od kontekstu.