// 1.约束函数参数及其返回值
// (name:string,age:number = 10):void ,返回值会自动类型判断,当前函数返回值默认为void
function jszj (name:string,age:number = 10):void{
console.log(`im ${name}, my age is ${age}`);
}
jszj("ws",23)
// 2.使用接口约束函数参数
interface zwJsObj {
name:string,
age:number
}
function jszj (zwJsObj:zwJsObj){
console.log(`im ${zwJsObj.name}, my age is ${zwJsObj.age}`);
}
jszj({name:"ws",age:23})
// 3.泛型约束函数参数
function print <t> (content:t){
console.log(content);
}
// 泛型:当函数调用时才“确认”参数类型。
print<number>(123)
print<string>("123")
print<boolean>(true)
// 4.约束剩余参数
// ...args将剩余参数放进args数组中(剩余参数类数组转换成了真数组)
function t2 (arr:number[],...args:any[]):any[]{
args.push('abc')
console.log(items);
return items
}
t2([1,2,3],{name:'ws'},18,true)
断言解决 解构函数返回值类型判断不精准
function fa () {
return [1,'Name']
}
// id: string | number , uName: string | number
let [id,uName] = fa()
function fa () {
return [1,'Name'] as [number,string]
}
// id: number , uName: string
let [id,uName] = fa()