うさぎのメモ帳

Type 'Timeout' is not assignable to type 'number'.

2019年10月23日 - 2019年10月23日

TypeScriptにてsetTimeout, setIntervalを使った際に、戻り値を number 型に代入しているのに表題のエラーが表示される場合は、

let interval: number = 0

const update = () => { ... }

onMounted(() => {
  interval = setInterval(() => update(), 100) // ここでエラー発生
})

onUnmounted(() => {
  clearInterval(interval)
})

window.setTimeout, window.setIntervalにすると解消されます。

- interval = setInterval(() => update(), 100)
+ interval = window.setInterval(() => update(), 100)

onMounted, onUnmountedComposition API RFC | Vue Composition APIでの書き方です。