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.

