Typescript: يظهر لي VSCode "يجب أن يحتوي النوع على طريقة [Symbol.iterator] () (...)" ولكن النوع يحتوي عليه.

تم إنشاؤها على ٧ أكتوبر ٢٠١٥  ·  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 التقييمات