メインコンテンツにスキップ

型のエイリアス

再利用可能な複雑な型がある場合、Flowで型エイリアスを使用してエイリアスを作成できます。

1type MyObject = {2  foo: number,3  bar: boolean,4  baz: string,5};

このようなエイリアス型は、型を使用できる場所ならどこでも使用できます。

1type MyObject = {2  // ...3};4
5const val: MyObject = { /* ... */ };6function method(val: MyObject) { /* ... */ }7class Foo { constructor(val: MyObject) { /* ... */ } }

型エイリアスは、文字通りエイリアスにすぎません。異なる型を作成するのではなく、特別な型の別の名前です。つまり、型エイリアスは、等しい型と完全に相互交換できます。

1type MyNumber = number;2declare const x: MyNumber;3declare function foo(x: number): void;4foo(x); // ok, because MyNumber = number

不透明な型のエイリアスでは、型を同じ扱いたくない場合に代わる手段が提供されています。

型エイリアスの構文

型エイリアスは、キーワードtypeと、その名前、等号=、型定義を続けて使用して作成されます。

type Alias = Type;

任意の型を型エイリアス内に含めることができます。

1type NumberAlias = number;2type ObjectAlias = {3  property: string,4  method(): number,5};6type UnionAlias = 1 | 2 | 3;7type AliasAlias = ObjectAlias;

型エイリアスのジェネリクス

型エイリアスには独自のジェネリクスを設けることもできます。

1type MyObject<A, B, C> = {2  property: A,3  method(val: B): C,4};

型エイリアスジェネリクスはパラメーター化されます。型エイリアスを使用するときは、そのジェネリクスごとにパラメーターを渡す必要があります。

1type MyObject<A, B, C> = {2  foo: A,3  bar: B,4  baz: C,5};6
7var val: MyObject<number, boolean, string> = {8  foo: 1,9  bar: true,10  baz: 'three',11};