Typescript: VSCode 显示“Type must have a [Symbol.iterator]() method (...)”但 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 等级

相关问题

blendsdk picture blendsdk  ·  3评论

weswigham picture weswigham  ·  3评论

siddjain picture siddjain  ·  3评论

MartynasZilinskas picture MartynasZilinskas  ·  3评论

zhuravlikjb picture zhuravlikjb  ·  3评论