一、声明对象类型
1、?代表可选属性
2、索引签名
格式:[key:string]:any 相当于key-value,key的类型为字符串,value的类型为任意
作用:>=0 没有做限制的 key-value
3、案例
// 声明对象类型 ?sex为可选属性 let person:{name:string, age:number, sex?:string} person = {name:'tom', age:8} console.log(person);// 索引签名 >=0个不做限制的 key-value let student:{name:string, age?:number, grade?:number, [key:string]:any} student = {name:'jojo', sex:"男", score:80} console.log(student);
二、声明数组类型
1、特点:数组中元素的类型唯一且相同
2、格式
let a:类型[]
let Arry<类型>
3、案例
// 声明数组类型 // 数组中元素的类型唯一且相同 let hobby:string[] // 元素为字符串 hobby = ['抽烟', '洗澡', '烫头'] console.log(hobby, typeof hobby);let score:Array<number> score=[10,60,50,100] console.log(score);
三、tuple 元组类型
1、理解:元素类型不唯一的数组
2、格式
let a:[类型,类型]
3、案例
// tuple 元组类型,多种类型的数组 ?可选属性 let a:[string, number, number?] a=['12', 12, 24] // ...Arry<string>, Arry<string>是元素为字符串的数组,...结构后,0或任意个字符串 let b:[string, number, ...Array<string>] b=['a',12] console.log(b);
四、声明函数类型
1、注意
=>在函数类型声明中,描述参数和返回值的类型
2、案例
// => 在函数类型声明中,表示参数和返回值类型 // 求和 let add:(x:number,y:number)=>numberadd = function(x, y){return x+y } console.log(add(10, 20)); // 求面积 let area:(w:number, h:number) => number area = (w, h)=> w*h console.log(area(10, 10));