Qué enciende strict en TypeScript
Los flags individuales detrás de strict, mostrados por lo que atrapa cada uno.
// strictNullChecks: null no es asignable a string
function upper(value: string | null): string {
return value === null ? "" : value.toUpperCase();
}
// noUncheckedIndexedAccess: rows[0] es string | undefined
function firstLine(rows: string[]): string {
const first = rows[0];
return first ?? "(empty)";
}
// strictFunctionTypes: los parámetros se revisan de forma contravariante
type Handler = (value: string) => void;
const wide: (value: unknown) => void = (value) => console.log(value);
const narrowed: Handler = wide;
// noImplicitAny: un parámetro sin tipo es un error, así que anótalo
function total(values: readonly number[]): number {
return values.reduce((sum, value) => sum + value, 0);
}
console.log(upper(null), firstLine([]), total([1, 2]));
narrowed("ok");
Cómo funciona
strictNullCheckssepara null de todos los demás tipos.noUncheckedIndexedAccessvuelve posiblemente undefined una lectura por índice.exactOptionalPropertyTypesimpide que undefined sustituya a ausente.
Palabras clave y builtins usados aquí
Handlerconstfunctionnumberreadonlyreturnstringtypeunknown
El intento, en números
- Líneas
- 23
- Caracteres a escribir
- 774
- Tokens
- 158
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 95 segundos.
Paso 2 de 2 en satisfies y strict; paso 22 de 23 en Tipos y anotaciones.