์ด ์ฝ๋์์ ํด๋น ์ค๋ฅ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
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
์ธํฐํ์ด์ค์ ์ ์ธ์ ๋ณด๊ฐํด์ผ ํ๋ฏ๋ก ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ถ๊ฐํ๋ฉด ์ค๋ฅ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค.