C#碼農學TypeScript——基礎型別(2)
阿新 • • 發佈:2020-04-14
學習每種語言,最開始都是型別。
下面做個表格,比較直觀看一看。
名稱 | 表示 | 取值 | 舉例 | 備註 |
布林值 | boolean | true/false |
let isDone: boolean = false; |
|
數字 | number | 十進位制、十六進位制、二進位制、八進位制 |
let decLiteral: number = 6; let hexLiteral: number = 0xf00d; let binaryLiteral: number = 0b1010; let octalLiteral: number = 0o744; |
TS裡所有數字都是浮點數 |
字串 | string |
雙引號"" 單引號‘‘ 模板字串`` |
let name: string = "bob"; let name: string = `Gene`;
let sentence: string = `Hello,my name is ${ name }. `;
|
|
陣列 |
元素型別後加[] 陣列泛型Array<元素型別> |
let list: number[] = [1,2,3]; let list: Array<number> = [1,3]; |
||
元組Tuple |
let x: [string,number]; // Declare a tuple type |
表示一個已知元素數量和型別的陣列,各元素的型別不必相同。 | ||
列舉 | enum |
enum Color {Red = 1,Green,Blue} let colorName: string = Color[2]; alert(colorName); // 顯示‘Green‘因為上面程式碼裡它的值是2 |
為一組數值賦予友好的名字。 預設從0開始編號,可以手動賦值。 可以由數值取到它的名字。 |
|
任意值 | any | 任意值 |
不清楚型別,不希望型別檢查器對它檢查,直接通過編譯。 let notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // okay,definitely a boolean 你可能認為 let notSure: any = 4; notSure.ifItExists(); // okay,ifItExists might exist at runtime notSure.toFixed(); // okay,toFixed exists (but the compiler doesn‘t check) let prettySure: Object = 4; prettySure.toFixed(); // Error: Property ‘toFixed‘ doesn‘t exist on type ‘Object‘. 當你只知道一部分資料的型別時, let list: any[] = [1,true,"free"]; list[1] = 100; |
|
空值 | void |
函式無返回值: function warnUser(): void { alert("This is my warning message"); } 宣告一個 let unusable: void = undefined;
|
表示不是任何型別 | |
Null和Undefined | null和undefined | null和undefined |
// Not much else we can assign to these variables! let u: undefined = undefined; let n: null = null; 預設情況下 有例外,指定--strictNullChecks標記時,只能賦值給void和它們各自。 |
|
Never | never | never |
// 返回never的函式必須存在無法達到的終點 function error(message: string): never { throw new Error(message); } // 推斷的返回值型別為never function fail() { return error("Something failed"); } // 返回never的函式必須存在無法達到的終點 function infiniteLoop(): never { while (true) { } }
|
表示永不存在的值的型別。 |
型別斷言
類似C#型別轉換。
沒有執行時的影響,只在編譯階段起作用。使用型別斷言,相當於告訴編譯器“相信我,我知道自己在幹什麼,它就是這個型別,我比你清楚。”
有兩種語法形式,等價,憑個人喜好。
尖括號語法:
let someValue: any = "this is a string"; let strLength: number = (<string>someValue).length;
as語法:
let someValue: any = "this is a string"; let strLength: number = (someValue as string).length;
JSX只能用as語法斷言。