Restricciones y valores por defecto en TypeScript
Un parámetro de tipo puede acotarse, y puede tener un valor por defecto.
interface Paged<Item, Meta extends object = { page: number }> {
rows: Item[];
meta: Meta;
}
function longest<T extends { length: number }>(a: T, b: T): T {
return a.length >= b.length ? a : b;
}
function makeStore<Value, Key extends string = string>() {
const rows = new Map<Key, Value>();
return {
set(key: Key, value: Value) {
rows.set(key, value);
return rows.size;
},
get: (key: Key) => rows.get(key),
};
}
const page: Paged<string> = { rows: ["a"], meta: { page: 1 } };
const store = makeStore<number, "a" | "b">();
store.set("a", 1);
console.log(longest([1, 2], [1]), page.meta.page, store.get("a"));
Cómo funciona
extendsacota lo que puede pasarse.= Tprovee un valor por defecto cuando no puede inferirse.- Las restricciones son lo que le permite al cuerpo usar el parámetro.
Palabras clave y builtins usados aquí
ItemKeyMapMetaPagedTValuebconstextendsfunctioninterfacenumberreturnstring
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 609
- Tokens
- 216
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 130 segundos.
Paso 2 de 4 en Parámetros de tipo; paso 2 de 20 en Genéricos.