リテラル型(Literal type)
型は集合そのものであるという前提のもと、number型やstring型などについて学びました。それによると、例えばnumber型は「全ての数値の集合である」とされます。
ここで、我々はふと思うのです。「型が集合なのであれば、例えば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を学ぶとありがたみがわかります。