閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

TypeScriptの"String Literal Types"や"Index types"が面白い

window.addEventListener('mousemove', e => {
    // ここで、eの型はMouseEvent型になる
});
window.addEventListener('keydown', e => {
    // ここで、eの型はKeyboardEvent型になる
});

みたいな感じでメソッドの引数の値に応じて、コールバック関数に渡される型を変えられたりする。

上記の例はIndex typesというのを使っているみたいだけど、初めて見る仕組みでちょっと感動しました。型を明示的に書けば同じ効果は得られるんですが、短くなるしこれでインテリセンスも効くのでかなり楽ができます。

文字列が未対応のものであればエラー扱いにもできるみたいでいいですね。