メインコンテンツまでスキップ

リテラル型(Literal type)

型は集合そのものであるという前提のもと、number型やstring型などについて学びました。それによると、例えばnumber型は「全ての数値の集合である」とされます。

ここで、我々はふと思うのです。「型が集合なのであれば、例えば1という数値のみを含む型も作ることができるのでは?」と。下のような集合のことです。

{1}\{ 1 \}

お答えしましょう。できます。

そしてこれを実現するのが、リテラル型となります。

let a: 1 = 1

この:の後についている1は値ではなく、「1という数値のみを含む型」を表しています

もちろん、1以外のいかなる値も1型の要素ではないため代入することは不可能です。

let a: 1 = 1
a = 100 // ERROR!

他の型についてもリテラル型を用いることができます。

let a: "hello" = "hello"
let b: true = true

ただ、これだけだとなんだかしょぼいですね。1のみを要素とする集合の型があったとして、そんなもの何に使うんでしょう?それは次に学ぶUnionを学ぶとありがたみがわかります。