ここまで、型注釈をほとんど書かずにTypeScriptを使ってきた。今回は、TypeScriptが裏側で何を判断していたのかを見てみよう。
const userName = 'JavaScript';
const score = 80;
const isPassed = true;
文字列、数値、それから条件式のところで出てきた true ですね。
TypeScriptは右側の値から、それぞれを string、number、boolean だと推論する。型とは、値の種類と、その値にできる操作を表す情報だ。
score.toUpperCase();
// Property 'toUpperCase' does not exist on type 'number'.
実行する前に、その値にはできない操作だと教えてくれるんですね。
そう。型注釈を自分で書くこともできる。ただ、推論できる場所へ毎回書く必要はないよ。
const userName: string = 'JavaScript';
const score: number = 80;
const isPassed: boolean = true;
型注釈が特に役立つのは、前回気になった関数の入口だ。
function add(a: number, b: number) {
return a + b;
}
add(1, 2);
add('1', '2'); // Argument of type 'string' is not assignable to parameter of type 'number'.
数値を受け取る関数だと、はっきりしました。戻り値の型は書かなくていいんですか?
入口さえ決まれば、a + b が number になることは推論できる。書いても構わないけれど、まずは推論に任せていい。
この型の情報は、実行するときにも使われるんですか?
いや、型は実行前に消える。実際に動くのは、型注釈を取り除いたJavaScriptだ。
function add(a, b) {
return a + b;
}
チェックのための情報で、動作そのものは変えないんですね。
そこがTypeScriptの立ち位置だよ。JavaScriptに、開発中だけ働く見張りを足している。
型は暗記するための飾りではなく、値の使い方を人とツールへ伝えるための情報だ。次は、自分たちのデータの形に名前をつけてみよう。

