value 就是在執行時期,能夠在表達式中引用的變數。
例如 let x = 5
會建立一個叫做 x
的 value,而且可以透過 console.log(x)
把值印出來。
🌕 我喜歡用陰陽的陽來形容 value
ES6(JavaScript 本來就有的):
let
、const
和 var
宣告的 valuefunction
class
import
TypeScript 特有的:
enum
namespace
或 module
🌑 我會用陰來形容 type。
我們並沒辦法拿型別執行來做運算,因為它們僅僅是用來標註型別用的,且經編譯後就會丟棄這些型別的訊息。
在 TypeScript 能以下列方法建立 type:
type sn = number | string
interface I { x: number[] }
class C { }
enum E { A, B, C }
import
class
enum
稱它們為特例的原因是,由這兩個關鍵字宣告出來的東西,同時是 value 也是 type。且不像一般的 type,它們經編譯後依然會被留下來。
class
範例enum
範例可至 TypeScript Playground 查看這段程式碼的 enum 是如何被編譯的
也就是,該如何反推某個值來得到它的型別? → typeof
只能從某個 🌕 value 得到它的 🌑 type;
反過來想從 🌑 type 得到 🌕 value 則是辦不到的。(上述特例除外)
⚠️ 此處的 typeof
是 TypeScript 的關鍵字,注意別和 JavaScript 的運算子 typeof
混淆了!
https://www.typescriptlang.org/docs/handbook/declaration-files/deep-dive.html