Saya dapat melihat kesalahan itu dengan kode ini:
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
}
Anda menambah antarmuka Number
tanpa memberi tahu sistem tipe tentangnya, jadi ia tidak tahu bahwa nomor sekarang memiliki iterator. anda perlu menambah deklarasi antarmuka Number
untuk menambahkan deklarasi iterator, jadi menambahkan sesuatu seperti ini ke file Anda akan menghilangkan kesalahan:
interface Number {
[Symbol.iterator](): IterableIterator<string>;
}
Komentar yang paling membantu
Anda menambah antarmuka
Number
tanpa memberi tahu sistem tipe tentangnya, jadi ia tidak tahu bahwa nomor sekarang memiliki iterator. anda perlu menambah deklarasi antarmukaNumber
untuk menambahkan deklarasi iterator, jadi menambahkan sesuatu seperti ini ke file Anda akan menghilangkan kesalahan: