// object (数组 对象 函数) // Array 数组 // let a = []; let aa:number[] = [1,2,3]; let bb:string[]; bb = ['1','2','3']; let cc:Array; cc = [true,false,true]; // Tuple 元组:固定长度的数组 let dd:[string,number,boolean]; dd = ['str',123,true]; // Object 对象 let ee:object; ee = {}; ee = function(){}; ee = []; let ff:{ name:string, age:number, sex:string, address?:string ,// 可选属性 [propName:string]:any // 任意属性 } ff = { name:'张三', age:18, sex: '男', address:'北京', eat:'苹果', book:'书籍' } // ff = { // name:'张三', // age:18, // sex: '男', // } // 函数类型 function fn4():void { console.log('fn4'); } fn4(); function fn5(a:number,b:string):string { // console.log('fn5'); return a + b; } fn5(3,'45'); let fn6:(a:number,b:number)=>number; fn6 = function(x,y) { return x + y; } fn6(12,34); // 枚举 enum enum Sex1 { man,woman } let kk: { name:string, age:number, sex: Sex1 } kk = { name:'李四', age:20, sex: Sex1.man } console.log(kk.sex === Sex1.man ? '男' : '女'); // type 声明的内容 更侧重于 类型的重复使用 支持联合类型和交叉类型 // 联合类型 // 类型别名 type myType = string | number | boolean; let ww:myType; ww = 'hello'; ww = 123; ww = true; type myType2 = { name:string, age:number } let zz:myType2; zz = { name:'赵六', age:22 } // & 交叉类型 let oo: { name:string } & { age?:number } oo = { name:'王五', age:18 }