TypeScript · Avançado · Inglês · Técnico
distributive conditional types
Comportamento de um tipo condicional cujo tipo verificado é um parâmetro de tipo nu: ao receber uma união, ele é aplicado a cada membro e os resultados são unidos.
Onde usar
Explica por que Exclude funciona sobre uniões e por que ToArray<string | number> vira string[] | number[]. Envolver em colchetes, como [T] extends [U], desliga a distribuição.
Em código
type Arr<T> = T extends unknown ? T[] : never;
type A = Arr<string | number>;
// A = string[] | number[]
type Arr2<T> = [T] extends [unknown]
? T[] : never;
type B = Arr2<string | number>;
// B = (string | number)[]Exemplos
The conditional is distributive, so it runs once per union member.
O condicional é distributivo, então roda uma vez por membro da união.
Wrap T in brackets to turn off distribution.
Envolva T em colchetes para desligar a distribuição.
Cuidado
A distribuição só ocorre quando T aparece 'nu' antes do extends, e com never como entrada o resultado é never, porque a união vazia não tem membros.