Typescript: VSCode menunjukkan kepada saya "Jenis harus memiliki metode [Symbol.iterator]() (...) " tetapi Jenis memilikinya.

Dibuat pada 7 Okt 2015  ·  1Komentar  ·  Sumber: microsoft/TypeScript

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
}   

Question

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 antarmuka Number untuk menambahkan deklarasi iterator, jadi menambahkan sesuatu seperti ini ke file Anda akan menghilangkan kesalahan:

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

>Semua komentar

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>;
}

Apakah halaman ini membantu?
0 / 5 - 0 peringkat