🌐

TypeScriptのTypeAliasとInterfaceの違い

1 min read

1. TypeAliasは汎用的な型指定が可能

右辺に共用型や交差型を組み合わせた型指定が可能。

type A = number
type B = A | string

2. Interface拡張時、割り当て可能性チェックが働く

拡張元の型を拡張先で上書きするとエラーとなる。

interface User {
  name: string
  age: number
}

// コンパイルエラー
interface SuperUser extends User {
  age: string | number // ageに型の互換性がない
  skill: string
}

しかし、拡張元の型を狭める指定であれば拡張は可能。

interface User {
  name: string
  age: any // 型を弱める
}

// 正常
interface SuperUser extends User {
  age: string | number
  skill: string
}

※複数宣言(オーバーロード)では、上書き不可能。

interface User {
  name: string
  age: any
}

interface User {
  age: string | number // コンパイルエラー
  skill: string
}

3. まとめ

以上の性質と型チェック機能を有効に活用するための使い分けとして、

TypeAlias

型と型を組み合わせて、新しい型を生成

Interface

クラスやオブジェクトの型を定義

Discussion

ログインするとコメントできます