裏面直接建議用 ES6 的 let 替代 var 了。
- boolean:布林型態
- number:數字型態,沒有 integer, long, float, double 之類的,只有 number,JavaScript 裡的數字都是 float。
- string:字串
- array:陣列,在型別後面加上 [],例如: let list: number[] = [1, 2, 3]; ,要注意的是,無法指定固定個數。
- tuple:就 tuple ,有點像陣列,但能指定每個元素的型態,這跟 Python 不一樣。例如:
let x: [string, number]; let x = ["Hello", 100]; let y: [string, number] = ["John", 200]; y[2] = "Doe"; console.log(y); // 輸出 [ 'John', 200, 'Doe' ]
- enum:列舉,用法跟其他語言大致相似:
enum Color {Red, Green, Blue}; let c: Color = Color.Green; // 比較特別的用法 let colorName: string = Color[2]; console.log(colorName); // 輸出 Blue
- any:任意型態,但要注意的是跟其他語言所指的 Object 型別不同,TypeScript 有獨立一個 Object 型別。說起來跟 C# 的 dynamic 比較相似。
let notSure: any = 4; notSure.ifItExists(); // 通過編譯,因為可能在執行時期就有 ifItExists() notSure.toFixed(); // 通過編譯,因為可能在執行時期就有 toFixed() let prettySure: Object = 4; prettySure.toFixed(); // 編譯錯誤,編譯時會有 Object 型別沒有 toFixed 的錯誤。
- void:就 void ,表示不會傳回任何東西
- null:就 null ,可以把任何型態的變數指定為 null
- undefined:就 undefined,可以把任何型別的變數指定為 undefined
- never:表示絕對不會傳回變數,
// 只會丟出例外 function error(message: string): never { throw new Error(message); } // 裏面是不會結束的迴圈 function infiniteLoop(): never { while (true) { } }
let someValue: any = "this is a string"; let strLength: number = (someValue).length; // 也可以用類似 c# as 的語法 let strLength: number2 = (someValue as string).length;
沒有留言:
張貼留言