1 | function f1(...rest: Array<number>): number |
为了让编译器能够选择正确的检查类型,它与JavaScript里的处理流程相似。 它查找重载列表,尝试使用第一个重载定义。 如果匹配的话就使用这个。 因此,在定义重载的时候,一定要把最精确的定义放在最前面。
注意,function f1(...rest: Array<any>): any
并不是重载列表的一部分,因此这里只有两个重载:一个是接收数字数组另一个接收字符数组。 以其它参数调用会产生错误
。