1. Boolean 類型
let bool: boolean = true;
2. Number 類型
let num: number = 123;
3. String 類型
let str: string = "123";
4. Array 類型
let arr1: Array<number> = [1,2,3], arr2: string[] = ["a","b","c"];
5. Enum 枚舉類型
enum Something {
one,
two
}
等價于=====
enum Something{
one = 1,
two = 2
}
異構(gòu)枚舉
enum Something {
one,
two = "2",
three = 3,
four
}
let ex: Something = Something.four; //4
注:默認(rèn)值是自增長的,省略默認(rèn)初始值的時候,必須是第一項或者前一項的初始值是number類型赵抢;
6. Any類型
任意類型
any類型是十分有用的状蜗,它允許你在編譯時可選擇地包含或移除類型檢查。 你可能認(rèn)為 Object有相似的作用赚爵,就像它在其它語言中那樣。 但是 Object類型的變量只是允許你給它賦任意值 - 但是卻不能夠在它上面調(diào)用任意的方法,即便它真的有這些方法:
let value: any = "abc";
value = 123;
value = [1,2,3];
let obj1: any = {a: 1},
obj2: object = {a: 1};
obj1.a = 1; //ok
obj2.a =1; //error
7. Unknown類型
注:任何類型都可以賦值給unkown類型斤葱,但是unkown類型不可以賦值給除any以外的類型
let value : unknown;
value = "a"; //ok
value = 123; //ok
value = [1,2,3] //ok
value = undefined; //ok
value = {}; //ok
...
let a: string = value; //error
let b: number[] = value;//error
...
8. Tuple 類型
元組類型允許表示一個已知元素數(shù)量和類型的數(shù)組,各元素的類型不必相同
let arr: [number,number],
arr2: [string, string],
arr3: [number,string];
arr = [1,2]; //ok
arr2 = ["a", "b"];//ok
arr3 = [3, "a"]; //ok
9. Void 類型
再某種程度上講揖闸,void和any相反揍堕,它表示沒有任何類型;常用于函數(shù)返回類型汤纸;
function warning: void (){
console.log("this is void function");
}
//當(dāng)然也可以聲明變量類型衩茸,但是這毫無意義,因為它只能賦值null和undefined
let unusable: void = undefined;
10. Null 和 Undefined
默認(rèn)情況下null和undefined是所有類型的子類型
let a: null = null;
let b: undfined = undefined
a = 1;//error
let c: number = undefined; //ok 前提是ts --strictNullChecks是關(guān)閉的 不然會提示錯誤
11. Never類型
never類型表示的是那些永不存在的值的類型贮泞。
例如楞慈, never類型是那些總是會拋出異翅V颍或根本就不會有返回值的函數(shù)表達式或箭頭函數(shù)表達式的返回值類型; 變量也可能是 never類型囊蓝,當(dāng)它們被永不為真的類型保護所約束時饿悬。
function error(message: string): never {
throw new error(message)
}
function infiniteLoop(): nerver {
while (true){
}
}
12. Object類型
object表示非原始類型,也就是除number聚霜,string狡恬,boolean,symbol俯萎,null或undefined之外的類型傲宜。
let obj: object = {};
13.類型斷言
當(dāng)你清楚地知道一個變量具有比它現(xiàn)有類型更確切的類型,對當(dāng)前類型進行類型轉(zhuǎn)換夫啊。
//類型轉(zhuǎn)換方式有兩種
let str: any = "this is string"函卒;
let strlength1: number = (str as sting).length; //建議使用這種方式
let strlength2: number = (<string>str).length; //有兼容性問題