TypeScript基礎型別,類例項和函式型別宣告
TypeScript(TS)是微軟研發的程式語言,是JavaScript的超集,也就是在JavaScript的基礎上添加了一些特性.其中之一就是型別宣告.
一、基礎型別
TS的基礎型別有 Boolean,Number,String,Array,Tuple,Enum,Any,Void,Null,Undefined,Never,Object.
==布林型別 Boolean==
let isDone: boolean = false *在變數名後用冒號:T(T 代表TS的型別)宣告變數的型別。
==數字型別 Number==
//支援十進位制和十六進位制,ES6中引入的二進位制和八進位制 let decimal: number = 6; let hex: number = 0xf00d; let binary: number = 0b1010; let octal: number = 0o744;
==字串型別 String==
let name: string = `Gene`; let age: number = 37; let sentence: string = `Hello, my name is ${ name }.I'll be ${ age + 1 } years old next month.`;
==陣列型別 Array==
//有兩種宣告方式 //1 T[] let list: number[] = [1, 2, 3]; let list: any[] = [1, true, "free"]; //2 Array<T> let list: Array<number> = [1, 2, 3];
==元組型別 Tuple==
//可允許表示固定數量的陣列,但是陣列中可以具有不同的元素型別 let x: [string, number]; // Initialize it x = ['hello', 10]; // OK // Initialize it incorrectly x = [10, 'hello']; // Error
==列舉型別 Enum==
像java等其它語言一樣,列舉型別可以為一組數值賦予友好的語義化名字.
//預設從0開始編號,也可以只指定第一個元素的編號,之後的編號依次遞增,也可以全部手動賦值編號;可以由列舉的值得到它的名字 enum Color {Red = 1, Green, Blue} let colorName: string = Color[2]; alert(colorName); // 顯示'Green'因為上面程式碼裡它的值是2
==任意型別 Any==
任意型別直接讓型別檢查器通過編譯階段的檢查.
let notSure: any = 4; notSure = "maybe a string instead";//ok notSure = false; // ok
==Void型別==
與any型別相反,它表示沒有任何型別
//我們可以為一個沒有任何返回值的函式的返回值型別定義為void function warnUser(): void { alert("This is my warning message"); } //當宣告一個void型別變數時,只能賦值為undefined 和 null let unusable: void = undefined;
==Null 和 Undefined==
//預設情況下null和undefined是所有型別的子型別. let u: undefined = undefined; let n: null = null;
==Never型別==
never型別表示的是那些永不存在的值的型別。
never型別也是任何型別的子型別,也可以賦值給任何型別;
// 返回never的函式必須存在無法達到的終點 function error(message: string): never { throw new Error(message); }
二、型別斷言
類似其他語言的強制型別轉換
型別斷言有兩種形式。
其一是“尖括號”語法:
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;
三、類的例項的型別宣告
let greeter: Greeter; greeter = new Greeter("world");
四、函式型別的宣告
函式型別包含兩部分:引數型別和返回值型別,其中返回值型別ts可通過返回語句自動推斷得出.
js中:
function add(x, y) { return x + y }
TS中:
function add(x: number, y: number): number { return x + y; }
其中函式宣告時的引數有必傳引數,可選引數,預設引數,剩餘引數.
==必傳引數==
params:引數
==可選引數==
params?:引數型別
呼叫時可以不填;
==預設引數==
params=預設值
呼叫時可以不填;
宣告時一般放在最後一個位置,如果不是,那麼呼叫的時候必須要傳入undefined引數值
function buildName(firstName = "Will", lastName: string) { return firstName + " " + lastName; } let result1 = buildName("Bob"); // error let result2 = buildName("Bob", "Adams", "Sr.");// error let result3 = buildName("Bob", "Adams");// ok let result4 = buildName(undefined, "Adams"); // ok
==剩餘引數==
...restOfName: string[]
function buildName(firstName: string, ...restOfName: string[]) { return firstName + " " + restOfName.join(" "); } let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");