TypeScript支持的變量類型與JavaScript基本同樣。另外提供了枚舉類型。javascript
這裏仍是給出一些例子去理解TypeScript的變量類型使用,具體的語言知識能夠查看文檔。html
// boolean let success: boolean = true; // number let num1: number = 12; let num2: number = 0xab; // 支持多種進制 // string let str1: string = 'abc';
除上述示例,還有null, undefined, symbol類型,能夠參看文檔。java
數組有兩種聲明方式:數組
let arr1: string[] = ['hello', 'world']; let arr2: Array<string> = ['hello', 'world'];
元組是一種特殊的數組函數
let arr1: [string, number] = ['hello', 123];
元組越界時,會以聯合類型來處理,具體請查閱文檔。
枚舉類型與C#,Java語言相比,另外提供了一個便利特性,能夠拿到枚舉的名稱。code
enum Color {Red = 1, Green, Blue} let colorName: string = Color[2]; console.log(colorName); // 顯示'Green'由於上面代碼裏它的值是2
any表示任意類型,能夠在類型不肯定時使用(能不用就不要用),如:htm
object類型是基本的6個類型以外的其餘類型的基類。ip
使用時需注意,用object聲明時,後面只能當object使用,如:文檔
let a: object = new Date(); a.hasOwnProperty('name'); // ok a.getDate(); // error
never是個比較特殊的類型,表示永遠不會到達。get
典型的場景就是異常拋出函數的返回值。
function bizError(code: number, msg: string): never { throw new Error({ code, msg }); }
類型斷言,我以爲也能夠理解爲強制類型轉換。
這個特性和強類型語言類型,看幾個例子理解一下:
// 尖括號式 let var1: any = 'abc'; console.log((<string>var1).substring(1)); // as let var2: object = new Array<number>(); console.log((var2 as Array<number>).push(1));
有些狀況下,不須要指明變量類型,TypeScript能夠根據上下文自動推斷類型。以下示例:
let a = 'abc'; console.log(a.substring(1)); let obj1 = { str1: 'abc', num1: 123 }; let { str1, num1 } = obj1;