/** * Praticar 6 — Tipar o assíncrono. * * npx tsx praticar/06-tipagem.ts */ import { buscarLivro, type Livro } from '../src/biblioteca.js'; // TODO 1: declare o tipo de retorno de `tituloDoLivro` explicitamente. Depois // tente atribuir o resultado da chamada a uma variável `string` sem `await` e // leia a mensagem do compilador. async function tituloDoLivro(id: number) { const livro = await buscarLivro(id); return livro.titulo; } // TODO 2: escreva o tipo `TituloResolvido` usando `Awaited>` // e confirme que ele é `string`. // TODO 3: escreva `mensagemDeErro(erro: unknown): string`, tratando pelo menos // três formas: `Error`, `string` e qualquer outra coisa. Use-a num `catch`. // TODO 4: escreva o guarda `ehLivro(valor: unknown): valor is Livro` e a função // `lerLivro(carga: string): Promise`, que faz `JSON.parse`, valida e só // então devolve. Teste com um JSON completo e com um JSON faltando `isbn`. // TODO 5: em uma linha: por que aceitar o `any` que `resposta.json()` devolve é // pior justamente na fronteira da API? void tituloDoLivro(1).then((titulo) => console.log('exemplo de partida:', titulo)); export type { Livro };