Typescript: VSCode me muestra "Type debe tener un método [Symbol.iterator] () (...)" pero Type lo tiene.

Creado en 7 oct. 2015  ·  1Comentario  ·  Fuente: microsoft/TypeScript

Puedo ver ese error con 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

Comentario más útil

Está aumentando la interfaz Number sin decirle al sistema de tipos al respecto, por lo que no sabe que un número ahora tiene un iterador. necesita aumentar la declaración de la interfaz Number para agregar la declaración del iterador, por lo que agregar algo como esto a su archivo debería eliminar el error:

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

>Todos los comentarios

Está aumentando la interfaz Number sin decirle al sistema de tipos al respecto, por lo que no sabe que un número ahora tiene un iterador. necesita aumentar la declaración de la interfaz Number para agregar la declaración del iterador, por lo que agregar algo como esto a su archivo debería eliminar el error:

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

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

wmaurer picture wmaurer  ·  3Comentarios

siddjain picture siddjain  ·  3Comentarios

blendsdk picture blendsdk  ·  3Comentarios

kyasbal-1994 picture kyasbal-1994  ·  3Comentarios

MartynasZilinskas picture MartynasZilinskas  ·  3Comentarios