Typescript: VSCode zeigt mir "Type muss eine [Symbol.iterator]() Methode (...)" haben, aber Type hat sie.

Erstellt am 7. Okt. 2015  ·  1Kommentar  ·  Quelle: microsoft/TypeScript

Ich kann diesen Fehler mit diesem Code sehen:

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

Hilfreichster Kommentar

Sie erweitern die Number Schnittstelle, ohne dem Typsystem dies mitzuteilen, sodass es nicht weiß, dass eine Zahl jetzt einen Iterator hat. Sie müssen die Deklaration der Schnittstelle Number , um die Iterator-Deklaration hinzuzufügen, also sollte das Hinzufügen von etwas wie diesem zu Ihrer Datei den Fehler beseitigen:

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

>Alle Kommentare

Sie erweitern die Number Schnittstelle, ohne dem Typsystem dies mitzuteilen, sodass es nicht weiß, dass eine Zahl jetzt einen Iterator hat. Sie müssen die Deklaration der Schnittstelle Number , um die Iterator-Deklaration hinzuzufügen, also sollte das Hinzufügen von etwas wie diesem zu Ihrer Datei den Fehler beseitigen:

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

siddjain picture siddjain  ·  3Kommentare

DanielRosenwasser picture DanielRosenwasser  ·  3Kommentare

bgrieder picture bgrieder  ·  3Kommentare

blendsdk picture blendsdk  ·  3Kommentare

MartynasZilinskas picture MartynasZilinskas  ·  3Kommentare