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
}
异构枚举
enum Something {
one,
two = "2",
three = 3,
four
}
let ex: Something = Something.four; //4
注:默认值是自增长的,省略默认初始值的时候,必须是第一项或者前一项的初始值是number类型;
6. Any类型
任意类型
any类型是十分有用的,它允许你在编译时可选择地包含或移除类型检查。 你可能认为 Object有相似的作用,就像它在其它语言中那样。 但是 Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法:
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 类型
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同
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相反,它表示没有任何类型;常用于函数返回类型;
function warning: void (){
console.log("this is void function");
}
//当然也可以声明变量类型,但是这毫无意义,因为它只能赋值null和undefined
let unusable: void = undefined;
10. Null 和 Undefined
默认情况下null和undefined是所有类型的子类型
let a: null = null;
let b: undfined = undefined
a = 1;//error
let c: number = undefined; //ok 前提是ts --strictNullChecks是关闭的 不然会提示错误
11. Never类型
never类型表示的是那些永不存在的值的类型。
例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
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.类型断言
当你清楚地知道一个变量具有比它现有类型更确切的类型,对当前类型进行类型转换。
//类型转换方式有两种
let str: any = "this is string";
let strlength1: number = (str as sting).length; //建议使用这种方式
let strlength2: number = (<string>str).length; //有兼容性问题