Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não consigo retornar a Promise do tipo Negociacao[]

Bom dia a todos, o compilador não está deixando eu retornar a Promise usando o generics para Negociacao[], quando o substituo por any, ele deixa compilar.

`

import { NegociacaoParcial, Negociacao } from '../models/index';

export class NegociacaoService {

obterNegociacoes(handler: Function): Promise<Negociacao[]> {

    return fetch('http://localhost:8080/dados')
        .then(res => handler(res))
        .then(res => res.json())
        .then((dados: NegociacaoParcial[]) => 
            dados.map(dado => new Negociacao(new Date(), dado.vezes, dado.montante))
        )
        .catch(err => console.log(err));
}

}

Segue erro:

Type 'Promise<void | Negociacao[]>' is not assignable to type 'Promise<Negociacao[]>'. Type 'void | Negociacao[]' is not assignable to type 'Negociacao[]'. Type 'void' is not assignable to type 'Negociacao[]'.

2 respostas
solução!

Olá Henrique, tudo bem com você?

Esse é um erro um pouco chatinho, que nas próximas etapas do curso ele será resolvido da maneira que será estruturado o código, a questão é justamente o catch:

Como estamos retornando um console.log o compilador identifica que caso dê um erro não iremos retornar uma Promise<Negociacao[]>, para corrigir esse comportamento precisamos indicar que o retorno da função na verdade é:

Promise< void | Negociacao[] >

Entretanto, nas próximas aulas do curso ao invés de dar apenas o console.log, iremos retornar também o erro, e dessa maneira, podemos tirar o void da promise :)

Abraços e Bons Estudos!

Olá Geovani, estou bem obrigado.

Agradeço por me explicar o motivo.