Typescript: VSCode me montre "Type doit avoir une méthode [Symbol.iterator]() (...) " mais Type l'a.

Créé le 7 oct. 2015  ·  1Commentaire  ·  Source: microsoft/TypeScript

Je peux voir cette erreur avec ce code:

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

Commentaire le plus utile

Vous augmentez l'interface Number sans en informer le système de types, il ne sait donc pas qu'un nombre a maintenant un itérateur. vous devez augmenter la déclaration de l'interface Number pour ajouter la déclaration de l'itérateur, donc ajouter quelque chose comme ceci à votre fichier devrait éliminer l'erreur :

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

>Tous les commentaires

Vous augmentez l'interface Number sans en informer le système de types, il ne sait donc pas qu'un nombre a maintenant un itérateur. vous devez augmenter la déclaration de l'interface Number pour ajouter la déclaration de l'itérateur, donc ajouter quelque chose comme ceci à votre fichier devrait éliminer l'erreur :

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

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

DanielRosenwasser picture DanielRosenwasser  ·  3Commentaires

blendsdk picture blendsdk  ·  3Commentaires

siddjain picture siddjain  ·  3Commentaires

fwanicka picture fwanicka  ·  3Commentaires

wmaurer picture wmaurer  ·  3Commentaires