TypeScriptにはanyを使わないよう注意しても型検査が無効化され型安全性が失われるパターンがいくつかあり、中には致命的なものも存在する。今回はこのパターンをいくつか紹介する。 コールバックのvoid戻り値型 コールバックのvoid戻り値型はすべての型を受け入れるためvoid型 === any型となる。 function f(cb: (a: number) => void): void { return cb(0); } function g(a: number): number { return a; } f(g); このためvoid型の値はvoid演算子を使用して即座に強制的にvoid型に変換しなければならない。 void f(g); ここでは手遅れ。 function f(cb: (a: number) => void): void { return void cb(0); }