函数重载 (函数参数间的组合约定)

原生js中并没有真正的函数重载,重名函数会被覆盖,但ts中可以有。

浅谈JavaScript函数重载

ts支持函数重载,一般用于针对传入不同的参数或参数数量以及返回值之间的类型约定。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 第一套约定(attr是'display'时,value必须是 'block' | 'nonde')
function showOrHide(ele: HTMLElement, attr: 'display', value: 'block' | 'nonde');
// 第二套约定(attr是'opacity'时,value必须是number)
function showOrHide(ele: HTMLElement, attr: 'opacity', value: number);
// 函数的实现
function showOrHide(ele: HTMLElement, attr: any, value: any) {
// ...
}

// interface也可以声明函数重载
interface Fn{
(name: string): string
(name: number): number
}
const fn: Fn= () =>