01 / 05
同じ形を何度も書くのはつらい
前のレッスンで気づいたはず。オブジェクトの型は、変数のたび・関数の引数のたびにまるごと書き直すことになる。
しかも直すときが大変だよ。プロパティを1つ足したくなったら、書いた場所を全部探して直さないといけない。1か所でも直し忘れるとエラーになる。
そこで、形に名前をつける。
オブジェクトの形を書く
INPUT · スライド
01 / 05
前のレッスンで気づいたはず。オブジェクトの型は、変数のたび・関数の引数のたびにまるごと書き直すことになる。
しかも直すときが大変だよ。プロパティを1つ足したくなったら、書いた場所を全部探して直さないといけない。1か所でも直し忘れるとエラーになる。
そこで、形に名前をつける。
02 / 05
type 名前 = 形; と書くと、その形に名前がつく。名前は先頭を大文字にするのが習わしだよ。変数と見分けがつきやすくなる。
名前をつけたら、あとはその1語を型のところに書くだけだ。
type Hito = { namae: string; toshi: number;};const yui: Hito = { namae: "ゆい", toshi: 20 };console.log(yui);実行結果
{ namae: "ゆい", toshi: 20 }03 / 05
同じ形のものをいくつ作っても、書くのは Hito の4文字だけ。
プロパティを足したくなったら、type の宣言を1か所直せばいい。使っているところで足りなくなれば、TypeScript が全部教えてくれるよ。
type Hito = { namae: string; toshi: number;};const a: Hito = { namae: "ゆい", toshi: 20 };const b: Hito = { namae: "りん", toshi: 21 };console.log(a.toshi + b.toshi);実行結果
41
04 / 05
名前をつけた型は、型を書ける場所ならどこにでも書ける。関数の引数、戻り値、それから変数。
関数の見出しが1行に収まるようになって、何を受け取って何を返すのかがひと目で分かるようになるよ。
type Hito = { namae: string; toshi: number;};function yobu(h: Hito): string { return h.namae + "さん";}console.log(yobu({ namae: "みなと", toshi: 22 }));実行結果
みなとさん
05 / 05
形が足りないときのエラーに、つけた名前が出てくる。「型 Hito では必須です」と言われれば、どの宣言を見に行けばいいかすぐ分かるよ。
名前をつけるのは、読む人(三日後の自分をふくむ)への説明でもあるんだ。ここから書いてみよう。
type Hito = { namae: string; toshi: number;};const h: Hito = { namae: "ゆい" };実行結果
型のエラー: プロパティ 'toshi' は型 '{ namae: string; }' にありませんが、型 'Hito' では必須です。