类型
(注意:尽量不使用any)
下面着重讲下object
object对象
let a = {
b:number,
c?:string,
[key:number]:boolean
}
- a有个类型number的属性b
- a可能有个类型string的属性c,如果有其值可能为undefined
- a可能有任意多个数字属性,其值为布尔值 a={b:1,10:true,20:false}
函数
可选参数、默认参数、剩余参数
可选参数
function log(message:string,userId?:string){
console.log(message,userId || 'not signed in')
}
默认值
function log(message:string,userId= 'not signed in'){
console.log(message,userId)
}
区别:带默认值的不需要放在末尾,可选参数一定要放在末尾
剩余参数:接受一组参数,数量不固定
function log(...numbers:number[]){
return numbers.reduce((total,n)=>total+n,0)
}
注意:一个函数只能接受一组剩余参数,且必须参数列表末尾
call,apply和bind
function sum(a:number,b:number):number{
return a+b
}
//以下结果都为30
add(10,20)
add.apply(null,[10,20])
add.call(null,10,20)
add.bind(null,10,20)()
apply:展开第二个参数;call:不展开;bind不调用函数,返回一个新的函数,通过(),.call,.apply调用,而且可以再绑定参数