Type Aliasについて

Type Alias

再利用したい型に対して名前をつけて管理するための仕組み

type User = {
    id: number,
    name: string
};

const u: User = {
    id: 1,
    name: "Jack"
};

交差型で拡張

交差型を使えばインタフェースの継承のようなことができる

type GooType = {
    goo: number;
};

type FooType = {
    foo: string;
};

type HogeType = GooType & FooType;

const a: HogeType = {
    goo: 1,
    foo: "abc"
};

interfaceとtype

ほぼほぼ同じようなことが実現できるのが使い分けに注意する必要がある

共通点

  • 継承することが可能
    1. Type Aliasは交差型で実現
    2. interfaceがtypeをextendsすることが可能
    3. typeがinterfaceを交差型で利用することが可能
  • class への implements が可能

相違点

  • Type Aliasの方が複雑な型を定義しやすい
    1. MappedTypes が利用できる
    2. index シグネチャが利用できる
    3. プリミティブ、配列、タプルなどオブジェクトと関数以外の型宣言が利用できる
  • interfaceの方が拡張性が高い
    1. Interface を再宣言すると Interface 同士がマージされる