TypeScript で range を実装する

Article

#TypeScript

#競プロ

syakoo

Python の range() のようなものを TypeScript で実装しました

コード

function* range(start: number, end: number, step = 1) {
  if ((start < end && step <= 0) || (start > end && step >= 0))
    throw new Error();
 
  const symbol = step > 0 ? 1 : -1;
  for (let i = start * symbol; i < end * symbol; i += step * symbol) {
    yield i && i * symbol;
  }
}

start から始まり end で終わる**ジェネレータ―**です。 step はステップの間隔で、 2 とすると 1 つ飛ばしに、-1 でデクリメントすることもできます

使い方

0, 1, ..., 9 まで足す

let sum = 0;
for (const x of range(0, 10)) {
  sum += x;
}

100 までの奇数を取得する

const odds = [...range(1, 101, 2)];