ts_函数约束

85 阅读1分钟
// 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()