1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TypeScriptのType Aliasについて

Posted at

TypeScriptでよく使うType Aliasに関して説明します。

まずは、文字列リテラルについておさらい。
次のように、定義された値以外の値を代入しようとすると、コンパイルエラーになる。

let person: 'tanaka';

// OK
person = 'tanaka';

// コンパイルエラーとなる
person = 'yoshida';

現実世界では上記のような使い方をすることはまずない。
文字列リテラル自体は、次のようにUnion Typeと組み合わせて使われることがほとんど。

let person: 'tanaka' | 'yoshida';

// OK
person = 'tanaka';
// OK
person = 'yoshida';
// コンパイルエラーとなる
person = 'suzuki';

変数 person の方にはUnion Typeを指定しているので、tanakaもしくはyoshidaのいずれかを値に取ることができる。
それ以外の値を代入しようとすると、コンパイルエラーとなる。上記の例ではsuzuki。

次に、上で指定したUnion Typeでとり得る型に制約をかけた person を型として使いたい。

let person: 'tanaka' | 'yoshida';

// OK
person = 'tanaka';
// OK
person = 'yoshida';
// コンパイルエラーとなる
person = 'suzuki';

// これはできない
// 'person' refers to a value, but is being used as a type here.ts(2749)
let newGen: person;

こんなときに使えるのが、今回のタイトルでもある、Type Aliasだ。
Type Aliasを使うと、上記の例でやろうとしていることが実現できる。

type person = 'tanaka' | 'yoshida';

let newGen: person;

// OK
newGen = 'tanaka';
// OK
newGen = 'yoshida';
// コンパイルエラーとなる
newGen = 'suzuki';

このように、Type Aliasを使うと予め指定したUnion Typeを使いますことができる。
今回はここまで。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?