Inferencia en TypeScript
Dónde deduce el tipo TypeScript, y cómo ayudarlo.
function pick<const T extends readonly string[]>(values: T): T[number] {
return values[0]!;
}
function withDefault<T>(value: T | undefined, fallback: NoInfer<T>): T {
return value ?? fallback;
}
function pair<A, B = A>(first: A, second: B): [A, B] {
return [first, second];
}
const chosen = pick(["go", "ts"]); // "go" | "ts", not string
const seconds = withDefault(undefined as number | undefined, 60);
const mixed = pair("a", 1);
const same = pair("a", "b");
console.log(chosen, seconds, mixed[1], same[1]);
Cómo funciona
- La inferencia fluye desde los argumentos, de izquierda a derecha.
- Un parámetro de tipo
constmantiene estrechos los literales. NoInferimpide que una posición dirija la inferencia.
Palabras clave y builtins usados aquí
ABNoInferTasconstextendsfunctionnumberreadonlyreturnstring
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 513
- Tokens
- 157
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 94 segundos.
Paso 3 de 4 en Parámetros de tipo; paso 3 de 20 en Genéricos.