TypeScript 変数に再割り当てするときに型が拡大することを防ぐ方法

TypeScriptでは変数に再割り当てすると、型が拡大されて推論されます。

どういうことか見てみましょう。

const a = 'x' // aの型は'x'
let b = a   // bの型はstring

変数aの時点では’x’ですが、bに割り当てるとstringと推論されます。

aに明示的なアノテーションを追加することで、拡大を防ぐことができます。

const a: 'x' = 'x'
let b = a // bの型は'x'