1. 布尔值、数字、字符串
let bool: boolean = false;
let num: number = 123;
let str: string = "古德古德";
let str_2: string = `${str} 模版字符串也是OK的`;
2. 对象
let obj: object = {a: 1, b: 2};
3. 数组
let arr: number[] = [1];
let arr2: Array<string> = ['string'];
let arr3: [string, number];
arr3 = ['str', 1] // 类型必须以一一对应
4. 枚举
- 参数和变量一样来命名,不能以数字特殊符号等开头
- 第一个参数索引默认为0,依次递增
- 可以给任意值设置索引,以此值为基准索引依次往右递增,不影响此值右边的默认索引
- 一般用来定义常量;例如接口返回code码
enum Color {red, blue = 2, black}; // {0: "red", 2: "blue", 3: "black", red: 0, blue: 2, black: 3}
let en: string = Color[2]; // blue
5. any
- 顾名思义就是任意类型的都OK
let arr: any[] = [1, 'str', null, undefined, true];
6. void
- 某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。
- 变量类型为void时,变量只能为undefined或者null(如果tsconfig中设置了"strictNullChecks": true,void只能为undefined)
- 函数的类型为void时,函数不能有return
let void_1: void = null;
let void_2: void[] = [null, undefined];
function void_3(): void {
console.log("不能有return");
}
7. never类型,下面的官网给的解释, 更深层次咋也暂时看不懂
never类型表示的是那些永不存在的值的类型。 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。