object对象类型(一切皆为对象)
let a:object;
a={}
a=function(){
}
一般不上面这样写,不关注是否是object,因为一切皆为对象
一般在意的是对象内部参数的类型
对象
// { } 用来指定对象中可以包含哪些属性 ,内部定义几个参数类型,赋值时必须写几个
// 语法:{属性名:属性值,属性名:属性值}
let b:{name:string,age:number}
b = {name:'孙悟空',age:18}
//? 表示不确定有无此属性,即属性可选
let c:{name:string,age?:number}
c = {name:'猪八戒'}
// [属性名:string]:any 定义多个字符串属性名,值为任意类型,可以代替省略的参数类型定义
let c:{name:string,[propName:string]:any}
c = {name:'沙和尚',age:18,gender:'男'}
函数
let d:Function
上面这种限制无意义
一般在意函数结构,有几个参数,返回值类型
let d:(a:number,b:number)=>number; // 参数为number,返回值为number
// 将一个函数赋值给d,意思和上面一样,都表示一个函数和函数返回值
d = function(n1:number,n2:number):number{
return n1+n2
}
数组类型
语法: 类型【】 或者 Array<类型>
let list1:number[]=[1,2,3] // 数值类型数组
let liat2:Array<number>=[4,5,6]
元祖类型 tuple (TS新增)
元组就是固定长度的数组,类型与个数一一对应 语法:【类型,类型,类型】
let tuple:[string,number,boolean]=["asd",123,false];
枚举 enum(TS新增)
将所有情况列出来,具体参数需要在多种可能情况中选出
enum Gender{
Male = 0,
Female = 1
}
// gender这个参数是多选的,用枚举在上面列出
let i:{name:string,gender:Gender}
// 实际赋值的时候选
i={
name:'孙悟空',
gender:Gender.Male
}