【问题标题】:Typescript - How to selection the overload function signature to get parameters types from? [duplicate]Typescript - 如何选择重载函数签名以从中获取参数类型? [复制]
【发布时间】:2020-01-31 22:30:59
【问题描述】:

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

function f(p: number) : string;
function f(p: string) : undefined;

function f(p: number | string): number | string {
    return (typeof p === 'number') ? String(p) : undefined;
}

Parameters<typeof f>[0] 只给我string。因为它是定义的最后一个重载。

如何选择从哪个重载函数获取参数?
当然不必重新排序定义。

【问题讨论】:

  • Do's and Don'ts 国家使用联合类型而不是因参数类型而异的重复重载
  • @AndrewNolan 它还声明了Note that we didn’t make b optional here because the return types of the signatures differ。像这样,由于地雷有不同的返回类型,这根本不是问题。

标签: typescript


【解决方案1】:

也许宁愿使用通用函数?

function f<K extends number | string>(p: K): K {
    return p;
}

【讨论】:

  • 没有。我使用的 sn-p 只是为了简化示例。我更新了
猜你喜欢
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 2023-01-20
  • 2018-03-24
  • 1970-01-01
  • 2018-01-03
相关资源
最近更新 更多