TypeScript —— 函数的重载

1.什么是重载?

官方解释:方法根据传入参数的不同会返回两种不同的类型。 如果传入的是代表纸牌的对象,函数作用是从中抓一张牌。 如果用户想抓牌,我们告诉他抓到了什么牌。 但是这怎么在类型系统里表示呢。

2.示例

比如我们有一个函数是这样的,当第一个参数是字符的时候,第二个参数是数字。当第一个参数是数字的时候,第二个参数是字符。但在ts里面我们该怎么表示这个重载,我们看一下下面的这个例子:

function fn(param1:number,param2:string)
function fn(param1:String,param2:number)
function fn(param1: any, param2: any) { 

}

当我们传入错误的参数类型的时候,ts会给我们检测出一个错误,说没有与此调用匹配的重载。(因为我们没有定义第一个参数为字符,第二个字符为字符,这样的重载,所以ts会检测出异常)


image.png
image.png

下面我们来增加一个重载,支持这种参数的传递

function fn(param1:String,param2:String)
function fn(param1: number, param2: string)
function fn(param1:String,param2:number)
function fn(param1: any, param2: any) { 

}
fn('a', 'b');

然后我们看一下执行结果


image.png

ok,没报错了