Array.fill 需要 1-3 个参数,得到 0?

Mat*_*ahr 10 arrays typescript

我正在将我的反应应用程序迁移到打字稿,并且遇到了这些代码块的问题:

const weekNumber = [
    ...Array(CURRENT_WEEK_NUMBER)
      .fill()
      .map((_, i) => i + 1)
  ];
  const weekLabels = [
    ...Array(17)
      .fill()
      .map((_, i) => i + 1),
    'Playoffs: Wild Card',
    'Playoffs: Divisional Round',
    'Playoffs: Conference Championship',
    'Playoffs: Super Bowl'
  ];
Run Code Online (Sandbox Code Playgroud)

预期有 1-3 个参数,但得到 0。未提供值参数

我明白这告诉我什么,但如何重构这段代码或让编译器忽略它?

TkD*_*odo 16

Array.fill接受一个您想要填充数组的值。通过省略参数,它将undefined在运行时运行,因此为了满足编译器并保持功能相同,您需要显式传递undefined

Array(17)
    .fill(undefined)
    .map((_, i) => i + 1)
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是使用Array.from代替,例如:

Array.from({ length: 17 }, (_, i) => i +1)
Run Code Online (Sandbox Code Playgroud)