Typescript: VSCode рдореБрдЭреЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ "рдЯрд╛рдЗрдк рдореЗрдВ рдПрдХ [Symbol.iterator]() рд╡рд┐рдзрд┐ (...)" рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдк рдореЗрдВ рдпрд╣ рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЕрдХреНрддреВре░ 2015  ┬╖  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
}   

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрддрд╛рдП рдмрд┐рдирд╛ Number рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрдврд╝рд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдм рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рд╣реИред рдЖрдкрдХреЛ рдЗрдЯрд░реЗрдЯрд░ рдШреЛрд╖рдгрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ Number рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

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

>рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрддрд╛рдП рдмрд┐рдирд╛ Number рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрдврд╝рд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдм рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рд╣реИред рдЖрдкрдХреЛ рдЗрдЯрд░реЗрдЯрд░ рдШреЛрд╖рдгрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ Number рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Antony-Jones picture Antony-Jones  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wmaurer picture wmaurer  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

manekinekko picture manekinekko  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

blendsdk picture blendsdk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

CyrusNajmabadi picture CyrusNajmabadi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ