Przejdź do treści

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    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 | number
    • Exclude<'a' | 'b', 'a' | 'b'>
      never

      Wykluczenie 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.