TL;DR
変数や関数の引数、戻り値に、その型を明示的に書くこと。型注釈ともいう。TypeScript では let myName: string = "Alice" のように、対象の後ろに : 型 を書く。
なぜ必要か
Effective TypeScript 第2版 ―型システムの力を最大限に引き出す83項目 によると、型アノテーションでプログラマの意図を TypeScript に伝えると、疑わしいコードを見つけやすくなる。たとえば、オブジェクトに型を付けておけば、プロパティ名の書き間違いを検出できる。型アノテーションは値がその型に適合するかをチェックし、余剰プロパティチェックも行うので、チェックをしない型アサーションより安全である。
仕組み
TypeScript のハンドブックによると、型アノテーションは JavaScript の一部ではなく、コンパイル時にすべて消える(型消去)。そのため、型アノテーションがプログラムの実行時の振る舞いを変えることはない。
多くの場合、型アノテーションは書かなくてよい。TypeScript は型推論で、変数の型を初期値から、関数の戻り値の型を return 文から決める。
例
function greet(person: string, date: Date) {
console.log(`Hello ${person}, today is ${date.toDateString()}!`)
}
function getFavoriteNumber(): number {
return 26
}注意点
ハンドブックは、型推論で同じ型になる場所では型アノテーションを付けないほうがよいとしている。一方で Effective TypeScript は、複数の分岐から return する関数やアロー関数では、戻り値に型アノテーションを付けるよう勧めている。戻り値の型の明示は、文書化や、意図しない変更を防ぐためにも使われる。