Tipos condicionales e infer en TypeScript
Tipos que ramifican, y extraen tipos internos.
type Unwrap<T> = T extends Promise<infer U> ? U : T;
type ElementOf<T> = T extends (infer U)[] ? U : never;
type NonNull<T> = T extends null | undefined ? never : T;
type A = Unwrap<Promise<string>>;
type B = ElementOf<number[]>;
type C = NonNull<string | null>;
function unwrap<T>(value: T | Promise<T>): Promise<T> {
return Promise.resolve(value);
}
Cómo funciona
T extends X ? A : Belige a nivel de tipos.infer Ucaptura el tipo interno que coincidió.neverelimina un caso de una unión.
Palabras clave y builtins usados aquí
PromiseTextendsfunctionnevernumberreturnstringtype
El intento, en números
- Líneas
- 11
- Caracteres a escribir
- 353
- Tokens
- 113
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 65 segundos.
Paso 1 de 3 en Tipos condicionales; paso 1 de 12 en Programación a nivel de tipos.