リテラル

{}を使うと、オブジェクトリテラルを定義することができる

const john = { name: "John", age: 20 };

プロパティアクセス

.を使えばプロパティにアクセスできる

const john = { name: "John", age: 20 };
console.log(john.name); // 'John'

オブジェクトの型注釈

以下のように定義できる

let obj: { name: string; age: number }; // { プロパティ名: 型; ... }

読み取り専用プロパティ

readonlyをつけると読み取り専用になる

let obj: { readonly name: string; age number };
obj = { name: "John", age: 20 };
obj.name = "Tom"; // [エラー]

オプションプロパティ

オブジェクトの型注釈のプロパティに? をつけると、そのプロパティは代入時に省略できる

let obj = { name: string; age?: number };
obj = { name: "John" }; // OK

オブジェクトメソッド

オブジェクトプロパティに関数を定義できる

const obj = {
  a: 1,
  b: 2,
  sum(): number {
    return this.a + this.b;
  },
};

console.log(obj.sum()); // 3

インデックス型

インデックス型を利用することで、任意のキーの値を取得することができる