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
}
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>;
}
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 interfazNumber
para agregar la declaración del iterador, por lo que agregar algo como esto a su archivo debería eliminar el error: