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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章