Typ użytkowy Extract w TypeScript
Typ użytkowy Extract
w TypeScript służy do konstruowania typu przez wyodrębnienie z T
wszystkich członków unii, które można przypisać do U
. Jest szczególnie przydatny, gdy chcesz wyfiltrować określone typy z typu unii.
Składnia:
type Extract<T, U> = T extends U ? T : never;
Przykład:
type Owoc = 'jabłko' | 'banan' | 'pomarańcza'; type Cytrus = 'pomarańcza' | 'cytryna'; type Wyodrębnione = Extract<Owoc, Cytrus>; // 'pomarańcza'
W tym przykładzie Wyodrębnione
będzie zawierać tylko 'pomarańcza'
, ponieważ jest to jedyny typ wspólny dla Owoc
i Cytrus
.
Czym różni się Extract od Exclude?
- Extract: Zatrzymuje tylko typy obecne zarówno w
T
, jak iU
. - Exclude: Usuwa typy z
T
, które są obecne wU
.
Przykład Exclude:
type NieCytrus = Exclude<Owoc, Cytrus>; // 'jabłko' | 'banan'
W tym przypadku NieCytrus
będzie zawierać 'jabłko'
i 'banan'
, ponieważ nie są obecne w Cytrus
.
Kiedy używać Extract a kiedy Exclude
- Używaj Extract, gdy chcesz zawęzić typ unii do określonych członków.
- Używaj Exclude, gdy chcesz odfiltrować określonych członków z typu unii.
Zrozumienie tych typów użytkowych może pomóc pisać bardziej wyrazisty i łatwiejszy w utrzymaniu kod TypeScript, szczególnie przy pracy z złożonymi typami i transformacjami typów.