Przejdź do treści
webtype.orgwebtype.org

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Unie

    Extract

    Zachowuje z unii tylko składniki przypisywalne do U. Dopełnienie Exclude.

    Czym jest

    Ten sam dystrybutywny warunek z zamienionymi gałęziami. Jego najprzydatniejsze zastosowanie to nie filtrowanie prymitywów, lecz ponowne zawężanie unii rozłącznej: mając unię kształtów i dyskryminator, Extract daje ci ten jeden składnik, o który chodziło.

    Przykłady

    • Extract<'a' | 'b' | 'c', 'a' | 'c'>
      →"a" | "c"
    • Extract<string | number | boolean, string | boolean>
      →string | boolean
    • Extract<Shape, { kind: 'circle' }>
      →{ kind: "circle"; r: number; }

      To zastosowanie naprawdę się opłaca: wyciągnięcie jednego składnika z unii rozłącznej po jego znaczniku.

    Każdy rozwinięty typ powyżej wypisał TypeScript 6.0.3, nie ręka człowieka.

    Czego nie robi

    • Nie zawęża wartości. Extract działa na typach; zawężenie zmiennej w czasie wykonania wciąż wymaga sprawdzenia, za którym kompilator nadąży.
    • Nie zgłasza błędu, gdy nic nie pasuje — po cichu daje never, a pomyłka wychodzi gdzie indziej.

    Wniosek

    Extract<Union, { tag: "x" }> to typowa wersja zawężenia, które i tak piszesz przez if. Sięgaj po nie, gdy generyk potrzebuje jednego składnika z przekazanej unii.