📝
TypeScriptの言語仕様に阻まれる場合
closure中でnullable変数に値を入れる場合
let hoge: string | null = null
// なんらかの同期的closure中でhogeに値を入れる
(() => {
if (...) {
hoge = ""
}
})()
// コンパイラはclosureの中の処理をチェックしないため、ここの時点でhogeはnullと認識する
変数宣言の時点でコンパイラに T | null
typeと認識させれば解決する
let hoge = null as string | null
Discussion