Unie
Exclude
Usuwa z unii każdy składnik przypisywalny do `U`.
Czym jest
Dystrybutywny typ warunkowy i najczystszy przykład tego, po co jest dystrybucja. `T` jest gołym parametrem po lewej stronie `extends`, więc warunek wykonuje się raz na składnik unii, a wyniki wracają w unię — pasujące składniki stają się `never` i znikają, bo `never` w unii to nic.
Przykłady
Exclude<'a' | 'b' | 'c', 'b'>
→"a" | "c"Exclude<string | number | null, null>
→string | numberExclude<'a' | 'b', 'a' | 'b'>
→neverWykluczenie wszystkiego zostawia `never`, co jest właściwą nazwą pustej unii.
Każdy rozwinięty typ powyżej wypisał TypeScript 5.9.3, nie ręka człowieka.
Czego nie robi
- Nie usuwa właściwości z obiektu. `Exclude` działa na uniach; obiektowym odpowiednikiem jest `Omit`.
- Nie wymaga dokładnego dopasowania. Znika każdy składnik *przypisywalny* do `U`, więc `Exclude<string | "a", string>` usuwa oba.
Wniosek
Jeśli `Exclude` zdaje się nic nie robić, lewa strona prawdopodobnie nie jest unią — dystrybucja potrzebuje składników.