Typescript-如何选择重载函数签名以从中获取参数类型?

Typescript-如何选择重载函数签名以从中获取参数类型?,typescript,Typescript,假设一个简单的重载函数定义如下: 函数f(p:number):字符串; 函数f(p:字符串):未定义; 函数f(p:number | string):number | string{ 返回(typeof p=='number')?字符串(p):未定义; } 参数[0]只给我字符串。因为这是最后定义的重载 如何选择从哪个重载函数获取参数? 当然,不必对定义进行重新排序。可能更愿意使用泛型函数 function f<K extends number | string>(p: K): K

假设一个简单的重载函数定义如下:

函数f(p:number):字符串;
函数f(p:字符串):未定义;
函数f(p:number | string):number | string{
返回(typeof p=='number')?字符串(p):未定义;
}
参数[0]
只给我
字符串
。因为这是最后定义的重载

如何选择从哪个重载函数获取参数?

当然,不必对定义进行重新排序。

可能更愿意使用泛型函数

function f<K extends number | string>(p: K): K {
    return p;
}
函数f(p:K):K{ 返回p; }
声明使用联合类型,而不是参数不同的重复重载types@AndrewNolan它还声明
注意,我们在这里没有将b设为可选,因为签名的返回类型不同
。就像这样,因为矿山有不同的回报类型,这根本不是问题。我使用的代码片段只是为了简化示例。我更新了