TypeScriptでFizzBuzzしてみました。(target:ES2015以上)
targetがES5以下だとArray#keys()が空オブジェクトになってrange返してくれないのにちょっとはまりました。
fizz.ts
class Fizz {
public static spec: Array<[number, string]> = [[15, "FizzBuzz"], [5, "Buzz"], [3, "Fizz"]];
public static *buzz(size: number) {
for (const i of Array(size).keys()) {
const [_, result] = Fizz.spec.find(([n, s]) => i % n === 0) || [0, i.toString()];
yield result;
}
}
}
Array.from(Fizz.buzz(20)).forEach((i) => console.log(i));