// @ts-check
を書くと、JSファイルでもTSとしてvalidateしてくれるそうです。
- JavaScript Programming with Visual Studio Code
普通のJavaScriptコードでも、 `//@ts-check` を付けておくとVS CodeがTSっぽく型を見てくれるんだって。これ便利だ。https://t.co/bciWQKhYft pic.twitter.com/twczq1klX1
— 高梨ギンペイ (@ginpei_jp) August 16, 2018
(@tsのひとごめん。)
DOMノードどーすんの問題
引数もらって計算して結果を返すだけの関数ってならこれすげー便利で良いんだけど、 querySelector()
使うと対応が面倒な感じになる。これどうしたら良いかなあ。というかTSでもよく分からないや……。
const input = document.querySelecter('input#the-input'); console.log(input!.value); // -> Property 'value' does not exist on type 'Element'.
querySelecter()
が返すのは Element
型なので、 <input>
用のプロパティが定義されていない。
一応、解決策としては instanceof
で確認してやることで型が固定します。
const input = document.querySelecter('input#the-input'); if (!(input instanceof HTMLInputElement)) { return; } console.log(input!.value);
ついでに null
チェックもできて一石二鳥ではある。
JSじゃなくてTSの場合はジェネリクス <T>
で書ける。
const input = document.querySelector<HTMLInputElement>('input#the-input')!;
input.value = 'Hello World!';
ただしこの場合は null
の確認が必要。(これ↑は !
ですっ飛ばした。)
なんかもっと楽々書けないかなあ。そもそもReactやVueが全盛期の現代で querySelector()
自体をあんまり使わないか……。