Typescript: O VSCode me mostra "O tipo deve ter um método [Symbol.iterator] () (...)", mas o Tipo tem.

Criado em 7 out. 2015  ·  1Comentário  ·  Fonte: microsoft/TypeScript

Posso ver esse erro com este código:

function* numIterator(num: number) {
    var n = parseInt(num.toString()).toString();
    var length = n.length;
    for (var i = length - 1; i >= 0 ; --i){
        yield n.charAt(i);
    }   
}

Number.prototype[Symbol.iterator] = function() {
    return  numIterator(this.valueOf());
}
var num = 2387;
for (var n of num){ // Error in VSCode but It works fine in Chrome
    console.log(n) // 7, 8, 3, 2
}   

Question

Comentários muito úteis

Você está aumentando a interface Number sem informar o sistema de tipos sobre isso, portanto, ele não sabe que um número agora tem um iterador. você precisa aumentar a declaração da interface Number para adicionar a declaração do iterador, portanto, adicionar algo assim ao seu arquivo deve eliminar o erro:

interface Number {
    [Symbol.iterator](): IterableIterator<string>;
}

>Todos os comentários

Você está aumentando a interface Number sem informar o sistema de tipos sobre isso, portanto, ele não sabe que um número agora tem um iterador. você precisa aumentar a declaração da interface Number para adicionar a declaração do iterador, portanto, adicionar algo assim ao seu arquivo deve eliminar o erro:

interface Number {
    [Symbol.iterator](): IterableIterator<string>;
}

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

seanzer picture seanzer  ·  3Comentários

jbondc picture jbondc  ·  3Comentários

kyasbal-1994 picture kyasbal-1994  ·  3Comentários

dlaberge picture dlaberge  ·  3Comentários

zhuravlikjb picture zhuravlikjb  ·  3Comentários