美文网首页
【TS】函数

【TS】函数

作者: 大Q本Q | 来源:发表于2019-06-28 15:36 被阅读0次

    函数定义

    不带类型

    function func1(x,y){ 
        return x+y;
    }
    let func2 = function (x, y) {
        return x + y;
    }
    

    带类型

    function func3(x: number, y: number): number {
        return x + y;
    }
    
    let func4 = function (x: number, y: number): number {
        return x + y;
    }
    

    带完整类型

    let func5: (x: number, y: number) => number = function (x: number, y: number):number {
        return x + y;
    }
    

    定义带类型,函数不带类型

    let func8 : (x:number)=>number = function(x){return 2};
    

    注:定义类型的参数名,可以与定义函数的参数名不同,但是顺序与类型要一致

    // func6的参数x相同,
    // func7类型参数是x,函数参数是x_diff,参数名不同,但类型一致都是number,所以正确
    let func6 : (x:number)=>number = function(x){return 2};        // 正确
    let func7 : (x:number)=>number = function(x_diff){return 2};   // 正确
    

    可选参数?

    注:可选参数必须放在必传参数之后

    function func( x:string, y?:string){}
    

    默认参数=

    function func(x:string = 'is x'){}
    

    剩余参数...

    function func(x:number, ...y:number[]) {
        console.log(x,y)
    }
    
    func(1,2,3,4,5,6);  // 输出:y===[2,3,4,5,6]
    

    重载

    根据参数类型不同,返回的类型也不同

    // 定义类型列表
    function func(x: number):number;
    function func(x:string):object;
    
    // 定义函数体
    function func(x):any {
        let result ;
        switch (typeof x){
            case 'number':result = x; break;
            case 'string':result = {name:x}; break;
            default:
                result = undefined;
        }
        return result;
    }
    
    func(18);      // 输出:18
    func('WJ');    // 输出: {name:'WJ'}
    

    相关文章

      网友评论

          本文标题:【TS】函数

          本文链接:https://www.haomeiwen.com/subject/qxqecctx.html