TypeScript używa typowania strukturalnego, co oznacza, że dwa typy są uznawane za zgodne, jeśli mają takie same właściwości, bez względu na ich nazwę. W przeciwieństwie do tego, typowanie nominalne sprawdza zgodność typów na podstawie ich nazw (nawet jeśli mają te same właściwości).
Przykład typowania strukturalnego:
interface A { x: number; } interface B { x: number; } const a: A = { x: 10 }; const b: B = { x: 10 }; const c: A = b; // OK, ponieważ 'A' i 'B' mają identyczną strukturę
W TypeScript, ponieważ używa się typowania strukturalnego, obiekty A
i B
mogą być używane zamiennie, ponieważ mają identyczną strukturę. Typowanie nominalne mogłoby ograniczyć takie przypisanie.
Korzyścią typowania strukturalnego w TypeScript jest większa elastyczność i możliwość łatwiejszego łączenia typów o podobnych strukturach, co prowadzi do mniejszej ilości kodu i lepszej współpracy w aplikacjach, które muszą łączyć różne struktury danych.