[TypeScript]オブジェクトの型定義

スポンサーリンク

オブジェクトリテラルによる型推論

TypeScriptでオブジェクトリテラルを使うと型推論が行われる。
通常はこの記法を使うべきである。

const obj = {
  id: 1,
}
obj.id="1" // エラー

アノテーションによる型定義

省略可能プロパティや読み取り専用プロパティを定義したい場合は、アノテーションを使って明示的に型を宣言する。

const obj2: {
  id: number,
  name?: string, // キー名の後ろに?を付けると省略可能となる
  readonly memo: string // キーの前にreadonlyを付けると読み取り専用となる
} = {
  id: 2,
  memo: "test2"
}

object型やObject型として定義

以下のようにアノテーションを使ってobject型やObject型として宣言することもできる。
ただし、オブジェクトであることを伝えるだけであり、メンバーにアクセスするとエラーになるため、使うことはほとんどない。

2つの違いは、object型はプリミティブ型を代入できるがObject型はプリミティブ型を代入できない点である。

const obj: object = {
  id: 1
}
console.log(obj.id) // エラー

const obj2: Object = {
  id: 2
}
console.log(obj2.id) // エラー

コメント