Przejdź do treści
webtype.orgwebtype.org

    ↑↓ 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 6.0.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.