3、函数

typescriptJavaScript函数添加了额外的功能:

  • 指定返回值类型
  • 指定传参的类型
  • 可选参数和默认参数
  • 剩余参数
  • 重载

指定返回值类型

function getInfo():number{
    return 123;
}
console.log(getInfo());  //123

上面代码定义了一个返回值类型为数字的函数

指定传参的类型

function getInfo(num1:number,num2:number):number{
    return num1 + num2;
}
console.log(getInfo(1,4));  //5

可选参数和默认参数

JavaScript里面的方法实参和形参可以不一样,但是typescript中必须一样,如果不一样就必须配置可选参数(在参数后面紧跟一个问号)

function getInfo(name:string,age?:number):string{
    if(age){
       return `${name} --- ${age}`;
    }else{
         return `${name} --- 年龄保密`;
    }
    
}
console.log(getInfo(1,4));  //5

可选参数需要写在最后面

ES6typescript中都可以设置默认参数

function getInfo(name:string,age:number=20):string{
    return `${name} --- ${age}`;
}
console.log(getInfo(1,4));  //5

上面代码给age设置了默认参数20

用接口定义函数的形状

interface SearchFunc {
    (source: string, subString: string): boolean;
}

let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
    return source.search(subString) !== -1;
}

剩余参数

当你并不知道会有多少参数传递进来,可以使用ES6中的点运算符。

function sum(name:string,...result:number):string{
    let sum = 0;
    for(let i = 0;i<result.length;i++){
        sum+=result[i]
    }
    return `${name} --- ${sum}`;
}
console.log(sum('加法运算',1,2,3,4));  // 加法运算 --- 11

剩余参数要写在最后面

重载

java中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况。
typescript中的重载:通过为同一个函数提供多个函数类型定义来实现重载。

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(12));      //我的年龄是:12
posted @ 2023-12-04 19:51  Ewar-k  阅读(18)  评论(0)    收藏  举报