[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里的处理流程相似。 它会查找重载列表,尝试使用第一个重载定义, 如果匹配的话就使用这个。 因此,在定义重载的时候,一定要把最精确的定义放在最前面。