Typescript: VSCode๋Š” "Type must have [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 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

jbondc picture jbondc  ยท  3์ฝ”๋ฉ˜ํŠธ

Antony-Jones picture Antony-Jones  ยท  3์ฝ”๋ฉ˜ํŠธ

siddjain picture siddjain  ยท  3์ฝ”๋ฉ˜ํŠธ

blendsdk picture blendsdk  ยท  3์ฝ”๋ฉ˜ํŠธ

bgrieder picture bgrieder  ยท  3์ฝ”๋ฉ˜ํŠธ