يمكنني رؤية هذا الخطأ مع هذا الرمز:
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
}
إنك تقوم بزيادة واجهة Number
بدون إخبار نظام الكتابة عنها ، لذلك لا يعرف أن الرقم يحتوي الآن على مكرر. تحتاج إلى زيادة إعلان الواجهة Number
لإضافة تصريح المكرر ، لذا فإن إضافة شيء مثل هذا إلى ملفك يجب أن يخلصك من الخطأ:
interface Number {
[Symbol.iterator](): IterableIterator<string>;
}
التعليق الأكثر فائدة
إنك تقوم بزيادة واجهة
Number
بدون إخبار نظام الكتابة عنها ، لذلك لا يعرف أن الرقم يحتوي الآن على مكرر. تحتاج إلى زيادة إعلان الواجهةNumber
لإضافة تصريح المكرر ، لذا فإن إضافة شيء مثل هذا إلى ملفك يجب أن يخلصك من الخطأ: