前端

[TypeScript]之函数重载

2019-12-05  本文已影响0人  是苏菇凉呀
TypeScript提供了函数重载的功能,它可以支持多种形式的参数类型,返回相同或者不同类型的结果
为什么提供重载功能?

javascript是动态语言,TypeScript 想把 JavaScript 静态化,通过一些静态检查提前发现错误。

重载解决了什么问题?

函数重载用来处理因函数参数不同而返回类型不同的使用场景,通过对同一个函数定义多个参数和返回值类型,在调用函数的时候能静态的检查参数类型。

举个简单例子,请看以下代码

function add(a: number,b: number): number{
    return a + b
}
add(1,2)     //3

我们定义了一个函数 add ,它需要传入两个数字类型的参数,函数的返回值是两个参数数字的相加,并且函数返回的类型是 number

假如有这样的需求,当函数传入的参数是 number 类型的时候,返回两个参数相加的结果,如果函数传入的参数是 string 类型的时候,就返回两个参数的拼接字符串
这个时候就需要使用函数重载来实现。

function add(a: number,b: number): number;
function add(a: string,b: string): string;
function add(a: any,b: any){
    return a + b;
}
add(1,2)    //3
add('su','yuan')    //suyuan

add 函数定义了多个类型,这样改变后,重载的 add 函数在调用的时候会进行正确的类型检查。
为了让编译器能够选择正确的检查类型,它与JavaScript里的处理流程相似。 它会查找重载列表,尝试使用第一个重载定义, 如果匹配的话就使用这个。 因此,在定义重载的时候,一定要把最精确的定义放在最前面。

上一篇 下一篇

猜你喜欢

热点阅读