function sum<T extends number | string>(num1:T, num2:T):T extends number ? number : string
function sum(num1, num2){
return num1 + num2
}
可以通过infer
推断出类型,配合三元运算符使用可以引用推断出的结果
type ParamsType<T extends (...args: any[])=>any> = T extends (...args:infer A) => any ? A : never
在泛型中使用条件类型时,如果传入一个联合类型,就会进行分发
type toArray<T> = T extends any ? T[] : never
type newArray = toArray<number | string>
这样得到的结果就是type newArray = string[] | number[]
, 而不是type newArray = (string | number)[]