一、数字
// number let decimal: number = 6; let hex: number = 0xf00d; let binary: number = 0b1010; let octal: number = 0o722; // @ts-ignore let big: bigint = 9007199254740991n;
二、字符串
// string let color: string = "blue"; color = "red"; let fullName: string = "bob bob"
三、布尔
// boolean let isDone: boolean = false;
四、字面量
// 字面量 let a = 10; a = 10;
五、任意类型
// any 表示任意类型,任意类型TS关闭类型检查,不建议使用 // 显式申明any // let d:any; //隐式申明any let d; d = 10; d = "hello"; d = true;
六、未知类型(安全的任意类型)
// unknown 表示位置类型的值 let e: unknown; e = 10; e = "hello"; e = true;
类型断言
let str: string; // any类型的变量可以赋值給任意类型变量 str = d; // unknown TS2322: Type 'unknown' is not assignable to type 'string'. // str=e; // unkonwn 是类型安全的any unkonwn类型的变量不能直接赋值给其他变量 if (typeof e === "string") { str = e; } // 类型断言 str = e as string; str = <string>e;
七、空值
function fun1(): void { }
八、没有值
function fun3(): never { throw new Error("error"); }
九、对象
//object表示一个js对象 let a: object; a = {}; a = function () { }; // {}用来指定对象中可以包含那些属性 语法:{属性名:属性值,属性名:属性值} // 属性名?:属性值 ?为可选属性 let b: { name: string, age?: number }; b = {name: '张三'}; b.age = 18; // [propName:string]:any 表示任意类型个属性 propName可以是任意非关键字字符串 let c: { name: string, [propName: string]: any }; c = {name: "李四", age: 18, gender: "男"} // 定义一个函数的参数及返回值 let d: (a: number, b: number) => number; d = function (a, b) { return a + b; }
十、数组
//数组 // let 变量: 类型[]; // let 变量: Array<类型>; let e: string[]; e = ['a', 'b']; let f: Array<number>; f = [1, 2, 3, 4]; // 不建议 let g: any[]; g = [1, 'str', true]
十一、元组
//元祖,元组就是固定长度的数组 let h: [string, number]; h = ['hello', 123];
十二、枚举
enum Gender { Male, Female, } let i: { name: string, gender: Gender }; i = { name: "王五", gender: Gender.Female }
十三、组合类型
//&指定类型 let j: { name: string } & { age: number }; j = {name: "孙悟空", age: 500} //类型别名 方便类型复用 type myType = 1 | 2 | 3 | 4 | 5; let k: myType; let l: myType; k = 5; // 可以使用 |来连接多个类型(联合类型) let m: "male" | "female"; m = "male"; m = "female"; let n: boolean | string; n = true; n = "hello";