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:
interfacepozwala na rozszerzanie innych interfejsów, używając słowa kluczowegoextends. Z koleitypepozwala 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:
interfacepozwala na deklarowanie tego samego interfejsu w wielu miejscach, łącząc definicje.typenie obsługuje tej funkcji. Zatem definicjainterfacemoże być rozszerzana przez kolejne deklaracje. -
Złożoność:
typejest 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ść:
typemoże być bardziej skomplikowany w przypadku połączeń różnych typów, aleinterfacedaje 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.

