TypeScript中的函数

定义函数的四种方式:

// 1.用function来定义函数(返回值的number可以省略,这是由于ts的类型推断)
function add1(x:number,y:number):number{
    return x+y;
}


//2.通过变量来定义函数类型
let add2:(x:number,y:number)=>number;


//3.通过类型别名来定义函数类型
type add3=(x:number,y:number)=>number;


//4.接口定义函数类型
interface add4{
    (x:number,y:number):number;
}


注意:这里的后三种只是定义了函数的类型,并没有具体实现。

函数参数相关:

1.函数参数必须一 一对应

  • 比如,我们调用上面的函数add1(2)  ,会报错并提示我们:应有 2 个参数,但获得 1 个。

2.可选参数必须位于必选参数之后

function add5(x:number,y?:number){  
    return y? x=y : x;
}
add5(1); 

3.函数参数默认值相关概念

  • 在调用时,在必选参数前,默认参数是不可以省略的,必须手动设置一个undefined
function add6(x:number,y=0,z:number,q=1){
    return x+y+z+q;
}
add6(1,undefined,3)

函数重载

这个概念是在一些强类型语言中才有的,在JS中依据不同参数类型或参数个数执行一些不同函数体的实现很常见,依托于TypeScript,就会有需要用到这种声明的地方。

TypeScript 中的函数重载也只是多个函数的声明,具体的逻辑还需要自己去写,他并不会真的将你的多个重名 function 的函数体进行合并

你可以简单的理解为:函数名字相同,但是参数个数,参数类型不同

//上边是声明
function add8(...rest:number[]):number;
function add8(...rest:string[]):string;

//下边是实现
function add8(...rest:any[]):any{
    let first=rest[0];
    if(typeof first==='string'){
        return rest.join('');
    }
    if(typeof first==='number'){
        return rest.reduce((pre,next)=>pre+next)
    }
}
console.log(add8(1,2,3));

 

发布了71 篇原创文章 · 获赞 59 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章