ExpertiDict

TypeScript · Avançado · Inglês · Técnico

distributive conditional types

/dɪˈstɹɪbjətɪv kənˈdɪʃənəl taɪps/substantivo

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.

Veja também

Todos os termos de TypeScript