TypeScript學習(二)—— 函數

前篇:TypeScript學習(一)—— 數據類型數組

在TS中,函數也和es中有些許不一樣。咱們能夠去指定形參的類型,也能夠去指定函數的返回類型。接下來咱們就來看下TS中的函數。函數

函數的定義

function Fn():string { //定義返回值爲string類型的函數
    const str:string = '22222'
    return str
}
function Fn1(name:string, age:number):string { //對形參類型進行約束
    return name + age
}
Fn1('mimi', 6) //不報錯
Fn1(44, 6) //類型不對編譯器報錯
Fn1('wumi') //報錯

//可選參數
function Fn2(name:string, age?:number):string { //加?爲可選參數,能夠傳能夠不傳,可選參數必須配置到參數的最後面
    return name + age
}
Fn2('xixixi') //不報錯


//默認參數
function Fn(name:string, age:number = 2):string { //給形參一個默認值,若是不傳age就爲默認的2
    return name + age
}
console.log(Fn('咪咪', 3)) //=>咪咪3
console.log(Fn('咪咪')) //=》咪咪2

//剩餘參數
function sum(...result:number[]):number { //...爲剩餘元素運算符,把傳進來的參數都放入result數組中
    return result.reduce((x, y) => x + y)
}
console.log(sum(1,2,3,4,5))
複製代碼

函數的重載

TS中函數的重載,經過爲同一個函數提供多個函數類型定義來實現多種功能的目的post

//參數類型不一樣的重載
function User(name:string):string;
function User(age:number):number;
function User(str:any):any{
    if(typeof str === 'string'){
        return '我是name:' + str
    }else {
        return '我是age:' + str
    }
}

User('wumi') //=>我是name:wumi
User(true)  //=>報錯,沒有布爾類型的重載

//參數個數不一樣的重載
function User1(name:string):string function User1(name:string, age:number):string function User1(name:any, age?:any):any{ if(age){ return '我是' + name + ',age:' + age }else {
        return "我是" + name
    }
}
console.log(User1('阿旺',2))  //我是阿旺,age:2
console.log(User1('阿旺'))    //我是阿旺
複製代碼
相關文章
相關標籤/搜索