在 TypeScript 有一種型別很特別,就是 Literal Types,你說他是什麼就是什麼。
舉個例子來說,我們宣告一個變數 foo
被且給他型別叫做 SuperMan
:
let foo : "SuperMan";
這時候這個 foo
我們只能 assign SuperMan
給他,如果 assign 其他任一直給他都會有問題。
foo = "SuperMan"; // OK
foo = "SuperMan1" // Compile Fail
除了字串之外,其實數字也是可以的,例如:
let boo: 95127;
boo = 95127; // OK
boo = 9527; // Compile Fail
除此之外,他還可像 Enum 一樣,可以是多個數值,其語法就是使用 |
分隔開來就可以。例如:
let color : "Gree" | "Blue" | "Gray" | "Black";
這時候的 color
就可以是上面任一顏色了。
不過一開始,我想說這樣到底跟 Enum 有什麼不一樣呢?他的好處到底在哪裡!
後來想到一點,那就是我如果希望我的 Enum 本身就是可以直接拿來當字串用,我就可以直接用這個,這樣一來就不用在轉來轉去了。