重载是指一个函数可以有不同的参数和返回值,也就是有不同的函数签名。ts支持函数重载,可以为同一个函数定义多个不同的类型:重载的写法有3种(估计大部分人只会一种):declarefunctionfunc(name:string):string;declarefunctionfunc(名称:号码):号码;这个大家都常用,声明两个同名函数就可以达到重载的目的:函数可以用接口的形式声明,同样,函数重载也可以用接口的形式声明:函数类型可以是交集类型,也就是可以使用多种类型,这其实就是函数重载的意思:虽然重载是一个非常有用的特性,但是当重载太多的时候,有时候写起来还是挺麻烦的。比如ts提供的lib.dom.ts中有这么一个类型定义:因为每个参数对应不同的返回值,所以重载了这么多。这么写太麻烦了,能不能通过类型编程动态生成呢?考虑重载这三种方式,declare和interface不好,但是&还可以,我能不能传入一个联合类型,然后返回交叉类型呢?例如,可以将所有提示都显示出来。看看它是如何实现的:joint-to-crossover函数的参数具有反转的性质,即类型减少。例如,可以同时将参数传递给A、B、C。如果是这样,如何定义参数类型?必须是A、B、C的交集,也就是你的A&B&C的交集类型,这样你才能接收到A、B、C的参数。这个属性可以用来实现联合转移。举个例子:肯定是可以提示的,我们看看是怎么实现的:jointtocrossfunction的参数有倒置的性质,也就是类型缩减。例如,如果参数可以同时传递给A、B、C,那么参数类型如何定义?必须是A、B、C的交集,也就是你的A&B&C的交集类型,这样你才能接收到A、B、C的参数。这个属性可以用来实现联合转移。类型UnionToIntersection=(UextendsU?(x:U)=>unknown:never)extends(x:inferR)=>unknown?R:never测试一下:这里的类型参数U是传入的联合类型,加一个UextendsU是触发分布式条件类型的特性。什么是分布式条件类型?当类型参数为联合类型时,在条件类型左侧直接引用类型参数时,TypeScript会分别传入每个元素进行类型计算,最后组合成联合类型。这种语法称为分布式条件类型。比如这样一个联合类型:typeUnion='a'|'b'|'C';如果我们想把其??中的a大写,我们可以这样写:typeUppercaseA
