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");
