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,没报错了
网友评论