// let a = {} // 常规的对象类型 // {属性名:类型,属性名:类型,....} // ? 当前属性 可以存在或者不存在 // 扩展属性 允许额外定义任意属性 [propName:string]:any let a:{name:string,age?:number,[propName:string]:any}; a = { name:"图图", age: 3 } a = {name:"12",sex:'男',a:'1',b:2,c:3} // 函数 // (形参:类型,形参:类型,...) => 类型; let b:(x:number,y:string) => string; b = function(a:number,b:string):string { return a+b } b(1,"1") // 数组 // 定义格式: // 类型[] / Array<类型> // 元组 Tuple:固定长度 固定顺序 固定类型的数组称为元组 let c:[number,number,string,number]; // let c:number[]; // let c:Array; // let c:any[]; c = [1,2,'3',4]; // 枚举 Enum // 批量定义固定常亮 常用于状态 分类 选项 // 默认从0开始自动递增赋值 可直接枚举名取值 // 把固定的选项变成有名字的常亮 enum Sex { man, //0 woman // 1 // a = 2 } let d :{ name:string, age:number, sex:Sex } d = { name:"图图", age: 3, sex:Sex.man } console.log(d.sex == Sex.man ? '男' : '女') // 类型别名:通过type给类型起名字 //格式: type 名字 = 类型 // 1.联合类型 type Sex1 = "man" | "woman"; // type Sex1 let e:Sex1; e = "man"; // 2.字面量 type status = 1|2|3; let f:status; f = 1; // 3.对象 type info = { name: string, age: number, address?:string } // let g:info = { // } // 交叉类型 // 合并多个类型 变量必须同时满足所有类型的属性要求 let h:{name:string} & {age:number}; h = { name:"图图", age: 3 } export {}