Typescript: VSCodeは、「Typeには[Symbol.iterator]()メソッド(...)が必要です」と表示しますが、Typeにはそれがあります。

作成日 2015年10月07日  ·  1コメント  ·  ソース: microsoft/TypeScript

私はこのコードでそのエラーを見ることができます:

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

最も参考になるコメント

型システムに通知せずにNumberインターフェイスを拡張しているため、数値にイテレータが含まれていることはわかりません。 イテレータ宣言を追加するには、インターフェイスNumberの宣言を拡張する必要があるため、ファイルに次のようなものを追加すると、エラーが解消されます。

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

>すべてのコメント

型システムに通知せずにNumberインターフェイスを拡張しているため、数値にイテレータが含まれていることはわかりません。 イテレータ宣言を追加するには、インターフェイスNumberの宣言を拡張する必要があるため、ファイルに次のようなものを追加すると、エラーが解消されます。

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

このページは役に立ちましたか?
0 / 5 - 0 評価