TS初めてのTypeScript

Day 2オブジェクト・配列・型に名前をつける

オブジェクトの型

オブジェクト(データのまとまり)にどんなプロパティがあるかを型で書く方法を学ぶ。

オブジェクトとは「名前つきのデータのまとまり」

プログラムでは、関係するデータをひとまとめにして扱いたい場面が多いです。たとえば「ユーザー」なら、名前・年齢・メールアドレスがセットになっています。こういう「複数の値を名前つきでまとめたもの」を(オブジェクト)と呼びます。

TYPESCRIPT
const user = {
  name: "田中",
  age: 30,
  email: "tanaka@example.com",
};
オブジェクトの例。{ } の中に「キー: 値」を並べる

このオブジェクトが「どんな形なのか」を型で表せます。プロパティごとに型をつけるのが、オブジェクトの型注釈です。

TYPESCRIPT
const user: { name: string; age: number; email: string } = {
  name: "田中",
  age: 30,
  email: "tanaka@example.com",
};
{ プロパティ名: 型; ... } の形でオブジェクトの型を書く

なぜ形を型にするのか

型があると、user.name は文字列、user.age は数値、と決まります。存在しない user.nema(タイプミス)を書くとエディタが赤線で教えてくれます。データの形をあらかじめ約束しておくことで、間違ったアクセスをその場で防げます。

型がないと気づけない

TYPESCRIPT
const user = { name: "田中", age: 30 };
console.log(user.nema); // undefined になるだけ。実行するまで気づかない

型があるとその場で分かる

TYPESCRIPT
const user: { name: string; age: number } = { name: "田中", age: 30 };
console.log(user.nema); // エラー: nema は存在しない

存在しないプロパティを追加しようとしたり、型の合わない値を入れようとしても、TypeScriptが止めてくれます。次のコードはどちらもエラーになります。

TYPESCRIPT
const user: { name: string; age: number } = {
  name: "田中",
  age: "30", // エラー: age は number なのに文字列を入れている
};
型が合わないとその場でエラーになる

AIにはこう聞く

「このオブジェクトの型注釈を書いて」とAIに頼めば、形に合った型を提案してくれます。あなたは提案された型を読んで、プロパティ名や型が実際のデータと合っているかを確認するだけで済みます。実装はAIに任せ、型で守り、内容を説明できるようにしておくのが狙いです。

  • オブジェクトは { キー: 値 } でデータをまとめたもの
  • 型は { プロパティ名: 型; ... } の形で書く
  • 存在しないプロパティや型違いはその場でエラーになる

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

オブジェクト { name: string; age: number } 型の変数に対して、正しいアクセスはどれですか。

Q2

オブジェクトに型をつけると、型をつけない場合と比べてどんな間違いを早く防げますか。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。