Código async tipado en TypeScript
Tipos de retorno Promise y aserciones sobre las formas que llegan por fetch.
interface Repo {
name: string;
stars: number;
}
async function fetchRepos(user: string): Promise<Repo[]> {
const response = await fetch(`/api/users/${user}/repos`);
if (!response.ok) throw new Error(`status ${response.status}`);
return (await response.json()) as Repo[];
}
async function total(user: string): Promise<number> {
const repos = await fetchRepos(user);
return repos.reduce((sum, repo) => sum + repo.stars, 0);
}
Cómo funciona
Promise<Repo[]>tipa lo que la función resuelve.as Repo[]asevera la forma del JSON parseado.reduceconserva la seguridad de tipos sobre el arreglo tipado.
Palabras clave y builtins usados aquí
Promiseasasyncawaitconstfunctionifinterfacenumberreturnstringthrow
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 425
- Tokens
- 123
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 70 segundos.
Paso 1 de 2 en Tipos async; paso 1 de 8 en Async y módulos.