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を使いますことができる。
今回はここまで。