Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Propriedade previewLink não existe dentro de volumeInfo

Ao tentar tipar o método livrosResultadoPraLivros para receber somente arrays do tipo Item, o método está dizendo que a propriedade previewLink não existe dentro de volumeInfo.

Não seria esta a melhor prática, tipar o método com o tipo de objeto que sempre será passado para ele para evitar erros futuros?

Este também não seria um erro do professor ao tentar realizar o acesso a uma propriedade que não será atribuída?

  livrosResultadoPraLivros(items: Item[]): Livro[] {
    const livros: Livro[] = []
    items.forEach(item => {
      livros.push(this.livro = {
        title: item.volumeInfo?.title,
        authors: item.volumeInfo?.authors,
        publisher: item.volumeInfo?.publisher,
        publishedDate: item.volumeInfo?.publishedDate,
        description: item.volumeInfo?.description,
        previewLink: item.volumeInfo?.previewLink,
        thumbnail: item.volumeInfo?.imageLinks?.thumbnail
      });
    })
    return livros;
  }
1 resposta
solução!

Olá, Lorenzo, tudo bem?

A tipagem é de fato uma boa prática para evitar erros, pois ajuda o TypeScript a identificar problemas antes mesmo de rodarmos o código, garantindo mais segurança e previsibilidade. Você já está no caminho certo ao perceber a importância disso! A ideia da instrutora de não tipar tudo explicitamente pode ser uma tentativa de evitar quebrar o fluxo de dados caso algum campo esteja ausente, especialmente quando lidamos com APIs externas, onde nem sempre todos os campos estão presentes. O uso do operador de navegação segura ?. ajuda a lidar com essas situações de maneira mais flexível.

Parabéns por compreender a importância da tipagem e sua aplicação! Isso já mostra que você está se aprofundando no assunto e pronto para garantir um código mais robusto.

Espero ter ajudado!

Siga firme nos seus estudos e conte com o fórum sempre que precisar!

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado