2
respostas

Erro Negociacao[]>' is not assignable

Código Atual:

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

export class NegociacaoService {

    obterNegociacoes(handler: ResponseHandler): 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));
    }
}

export interface ResponseHandler {
    (res: Response): Response
}

Mesmo seguindo os passos do professor, o código continuou a dar erro.

Mensagem de erro:

(alias) new Negociacao(_data: Date, _quantidade: number, _valor: number): Negociacao
import Negociacao
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[]'.ts(2322)

O que pode ser?

2 respostas

Bom dia, Leonardo! Como vai?

Veja se fazendo como a seguir as coisas funcionam como vc esperava:

obterNegociacoes(handler: ResponseHandler): Promise<void | Negociacao[]> {
     // Restante do código omitido.
}

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Ele funciona, porém no NegociacaoController quando é realizado o código abaixo, apresenta a mensagem Property 'forEach' does not exist on type 'void | Negociacao[]'. Property 'forEach' does not exist on type 'void'.

this._service
            .obterNegociacoes(res => {
                if (res.ok) return res;
                throw new Error(res.statusText);
            })
            .then(negociacoes => {
                negociacoes.forEach(negociacao => 
                    this._negociacoes.adiciona(negociacao));
                this._negociacoesView.update(this._negociacoes);
            });