Javascript 資料型別(Data types)分為「原始資料型別(Prmitive types)」和「物件型別(Object types)」兩種。
原始資料型別包含這六種:boolean
(布林值)、number
(數字)、string
(字串)、null
(無值)、undefined
(未定義值)與 symbol
(標識符,ES6 才出現)。
TypeScript 中使用 boolean
來標示布林值:
需注意:使用建構函式 Boolean 建立的是一個物件不是布林值:
new Boolean
返回的是一個物件;直接呼叫 Boolean
返回的是 boolean
型別
其他基本型別像是 number
與 string
對應的建構函示 Number
和 String
也是如此。(null
和 undefined
除外)
TypeScript 中使用 number
來標示數字:
編譯成 Javascript 的結果:
ES6 中的二進位制和八進位制表示法會被編譯為十進位制數字
TypeScript 中使用 string
來標示字串:
編譯成 Javascript 的結果:
Javascript 本身沒有空值(Void)的概念,TypeScript 中使用 void
這個特殊型別來標示沒有返回任何值的函式:
宣告 void
型別的變數沒有什麼太大的用處,因為你只能將它賦值為 null
和 undefined
這兩個特殊的子型別:
TypeScript 中使用 null
和 undefined
來標示這兩個原始資料型別:
undefined
和null
是所有型別的子型別。
null
和 undefined
型別的變數,可以賦值給其他型別的變數,例如 string
或 number
(除非啟用了 strictNullChecks
選項):
而 void
型別的變數不能賦值給 number
型別的變數:
在啟用 strictNullChecks
選項時,需要明確地指定變數可以為 null
或 undefined
:
strictNullChecks
選項在 tsconfig.json
將 strictNullChecks 選項設定為 true
:
普通的型別是不可以在賦值過程中改變型別的:
在 TypeScript 中使用 any
這個特殊型別來表示允許被賦值為任意型別:
被標示為 any
型別的變數,即使存取不存在的屬性或呼叫不存在的方法也都是允許的:
當我們宣告一個變數並標示其為 any
(任意值)型別後,對它的任何操作,返回的值的型別也都會是 any
(任意值)。
變數在宣告的時候如果沒有指定任何型別也沒有給予初始值(依照 TypeScript 型別推論(Type Inference)也無法推斷),就會被識別為為 any
(任意值)型別。