【问题标题】:How to get an optional argument through generic type in typescript如何通过打字稿中的泛型类型获取可选参数
【发布时间】:2018-06-16 18:33:29
【问题描述】:

我在打字稿中有这样的功能:

function foo<P>(param: P) {
  // ...
}

我想在提供泛型类型P时,应该需要param

foo<string>('bar')

当不提供泛型类型P时,则不应需要param

foo()

但在打字稿中,调用foo()时,ts会抛出错误:[ts] Expected 1 arguments, but got 0.

如果我像这样function foo&lt;P&gt;(param?: P) {}param 设为可选,那么在调用foo&lt;string&gt;() 时它不会抛出错误,而它应该。

我怎样才能让它工作?

【问题讨论】:

    标签: typescript typescript-typings


    【解决方案1】:

    你可以使用function overloads:

    function foo(): void;
    function foo<P>(param: P): void;
    function foo(param?: any) {
      // ...
    }
    

    【讨论】:

    • 你的回答是对的。实际上,在我的真实案例中,foo 函数将泛型类型传递给像 foo&lt;P&gt;() { return new Bar&lt;P&gt;() } 这样的新类,但类不能重载。
    • 好吧,我用函数重载解决了,定义了两个类,一个是泛型​​类型,另一个是没有。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-05-09
    • 2018-05-02
    • 2021-12-30
    • 2022-01-04
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多