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

Type Promisse<void> is not assignable

Mesmo mudando para utilizar o TypeScript 2.3.2 do VSCode o erro persiste. E se eu tento "calar a boca" do compilador passando Promisse<void|Negociacao[]> dá erro de forEach no controller.

Poderiam me ajudar por gentileza? Grato desde já.

5 respostas

Alison, Tudo bem?

poderia colocar uma parte do código do projeto?

import { Negociation, PartialNegociation } from '../models/index';

export class NegociationService {

    getNegociations(handler: Function): Promise<Negociation[]> {

        //Importando Dados da API externa
        return fetch("http://localhost:8080/data")
        .then(res => handler(res)) //Verifica se requisição está OK
        .then(res => res.json()) //Efetuando requisição e convertendo em JSON
        .then((data: PartialNegociation[]) => {
            data
                .map(d => new Negociation(new Date(), d.times, d.amount))
        }
        ) //Tranformando num array de Negociações
        .catch(err => console.log(err.message)) //Retornando erro de requisição
    }
}

Boa Tarde, Thiago.

Com esse trecho ocorre o erro de type Promise is not assignable.

Mesmo usando TS 2.3.2 da workspace.

E como havia comentado anteriormente, caso eu use Promisse<void | Negociation[]> dá erro lá no controller no ForEach.

Grato desde já pela sua ajuda.

this._negociationService
        .getNegociations(isOK)
        .then(negociations => {
            negociations.forEach(negociation => 
                this._negociations.add(negociation));
            this._negociationsView.update(this._negociations);
        });

Após usar o Promise<void | Negociation[]> e usando o código acima no controller que ocorre dizendo que forEach does not exist on type void | Negociation[]

solução!

Já resolvi, revi o código usado no curso e vi que havia colocado um retorno inválido.

Obrigado.