前言
我们看下官方的函数date方法,在使用过程中的参数提醒很友好
全局代码块中声明的函数
但我们在ts中使用函数中经常会遇到这种情况,函数的参数是灵活多变的,既可以不传,也可以传不同类型的参数,比如下面的message函数实现
function message(
params1?: string | object,
params2?: string | number | Function,
params3?: Function | number
) {}
message()
这种函数实现后有一个很大的弊端就是在使用时提示很不友好,此时就需要用到函数重载
function message(options: object):void
function message(text: string, onClose?: Function):void
function message(text: string, mode: string, duration?: number):void
function message(text: string, duration?: number, onClose?: Function):void
function message(
params1?: string | object,
params2?: string | number | Function,
params3?: Function | number
) {}
message()
这样函数的提示就会好多了
在对象中声明的函数
如果函数在一个对象中,那么实现的方式需要绕一下,如下
interface ShowMessage {
(options: object):void
(text: string, onClose?: Function):void
(text: string, mode: string, duration?: number):void
(text: string, duration?: number, onClose?: Function):void
}
interface Utils {
showMessage: ShowMessage
}
const utils: Utils = {
showMessage: (
params1?: string | object,
params2?: string | number | Function,
params3?: Function | number
) => {}
}
utils.showMessage()