TypeScript学习第三篇 - 函数的定义

2020-11-26 14:44:19 浏览数 (1)

1. 函数声明法。

代码语言:javascript复制
function run():string{
    return 'abc'
};

2. 匿名函数法。

代码语言:javascript复制
var func = function ():number{
    return 123
};
func();

3. 定义方法传参,参数与方法名都要声明类型。

代码语言:javascript复制
function getInfo(name:String,age:number):string{
    return `${name}---${age}`;
};
getInfo('张三',30);

4. 匿名函数传参,参数与方法名都要声明类型。

代码语言:javascript复制
var getInfo = function(name:String,age:number):string{
    return `${name}---${age}`;
};
getInfo('张三',30);

5. 没有返回值的方法。

代码语言:javascript复制
function run():void{
    console.log('这是一个没有返回值的方法');
}

6. 在TypeScript中形参和实参必须一样,如果不一样就要配置可选参数,对可传可不传的参数添加 ?号。

代码语言:javascript复制
function getInfo(name:string,age?:number):string{
    if(age){
        return `${name}---${age}`
    }else{
        return `${name}---年龄保密`;
    };
}
getInfo('张三')

7. 在TypeScript中设置默认参数。

代码语言:javascript复制
function getInfo(name:string,age:number = 20):string{
    if(age){
        return `${name}---${age}`
    }else{
        return `${name}---年龄保密`;
    };
}
getInfo('张三');

8. ES6 剩余参数在TS中的用法

代码语言:javascript复制
function sum(a:number,b:number,...result:number[]):number{
    // a b = 1 2;
    let sum_result = a b;
    // result 等于3、4、5、6
    for(let i = 0;i<result.length;i  ){
        sum_result  = result[i];
    };
    return sum_result;
};
console.log(sum(1,2,3,4,5,6));
// 21

9. TypeScript中的函数重载,重载即为两个或两个以上的同名函数,根据参数的个数或类型不同选择性执行其中的某一个,从而得到不同的结果。

在ES5中有同名函数时,后面声明的函数会把前面声明函数给覆盖,而在TS中写法如下:

代码语言:javascript复制
function getInfo(name:string):string;
function getInfo(age:number):string;
function getInfo(str:any):any{
    if(typeof str == 'string'){
        return '我叫' str;
    }else{
        return '我的年龄是' str;
    }
};
console.log(getInfo('张三'));
// 我叫张三
console.log(getInfo(30));
// 我的年龄是30

上面的方法变化一下,还可以写成下面这样。

代码语言:javascript复制
function getInfo(name:string):string;
function getInfo(name:string,age:number):string;
function getInfo(name:string,age?:any):any{
    if(age){
        return '我叫' name ',我的年龄是' age;
    }else{
        return '我叫' name;
    }
};
console.log(getInfo('张三'));
// 我叫张三
console.log(getInfo('张三',30));
// 我叫张三,我的上龄是30

0 人点赞