TypeScript のリテラル型は enum 型(列挙型)の制約を緩めたようなものです。 enum 型は 整数値 で値を保持しますが、リテラル型は 任意の型 で格納可能な値を定義します。
例えば、次のように定義した Answer
型は、その値として yes
あるいは no
という文字列のみ格納できるようになります。
// Answer というリテラル型を定義する
type Answer = `yes` | `no`;
// Answer 型の変数には 'yes' か 'no' のみ格納可能
let answer: Answer
answer = 'yes'; // OK
answer = 'no'; // OK
answer = 'maybe'; // Error
answer = 100; // Error