Open8
明示的な型宣言とlib.d.tsの活用
- TypeScirptをテスト的に使いたいなら明示的な型宣言を活用したほうがいい
- 関数で明示的な型宣言を使う例
- lib.d.tsに定義されている型を利用する
- 効率的にコードを書くために
- 正確な定義ができるように
lib.d.tsとはなにか
TypeScirpt自体に付属している標準的な機能などの型定義ファイル
DOMの型情報だったり、各種メソッドの型定義であったり。
TypeScriptをインストールしたらすぐにいろんな型定義が使えるのはこいつのおかげ。
nodeの場合は@types/node
を別でインストール必要があるがこれはlib.d.tsにnodeの型定義情報が入っていないから。
lib.d.tsを活用したコーディング例
IntersectionObserver
を例として解説する。
型推論で行う場合
const config = {};
const callback = () => {};
const observer = new IntersectionObserver(callback, config);
明示的な型宣言
const config: IntersectionObserverInit = {};
const callback: IntersectionObserverCallback = () => {};
const observer: IntersectionObserver = new IntersectionObserver(
callback,
config
);
読者対象
- TypeScriptを書いたことがある人
- 簡単なテストは型定義で済ませたい人
なんとなくTypeScirptは書けるけどなんとなく書いてるなって人向け
TypeScirptが書ける≒JavaScriptもある程度分かってるという前提で進めていく。
なんで型推論が働いているのに明示的に型を書くのか
※以降は関数のお話
型推論と明示的な型定義の使い分け
- 型定義は書いておいたほうがいい
- 型推論でもいい場面と型定義を書いたほうがいい場面の違いとは
- 一時的な変数には不要
- 関数・クラスのメソッド内部など外部から参照されない想定の箇所も不要
- 定義している箇所と呼び出している箇所が遠ければ積極的に型定義を書く
- 異なるファイル(モジュール)の場合
- 複数の箇所から呼ばれている関数
- 型推論のほうがいい場合もあるので100%型定義を書こうとしない