【问题标题】:Overloading function differs in number & type of parameters in Typescript using Union types使用联合类型的 Typescript 中的重载函数的参数数量和类型不同
【发布时间】:2017-05-16 05:35:33
【问题描述】:

我正在尝试重载一个具有如下两个重载的函数

getData(): MyModel
getData<T>(type:string):T

现在根据blog 中的详细信息,我正在尝试使用union types 来提供上述函数可以采用的参数类型。

案例 1:(这里没有问题)

当函数有参数并且它们仅在以下类型上有所不同时

getData(type:number): MyModel
getData<T>(type:string):T
getData<T>(type: number|string): MyModel:T {
 //implementation
}

案例2:(问题:在这种情况下如何使用Union类型)

当函数参数的数量和类型都不同时,如下所示

getData(): MyModel
getData<T>(type:string):T

问题

  1. 如何在Case 2 中使用Union types
  2. 如果Union types不能使用比如何重载这些函数(使用Typescript)

【问题讨论】:

    标签: javascript oop typescript overloading union-types


    【解决方案1】:

    您需要将参数设置为可选并使用联合类型作为返回类型:

    class MyClass {
        getData(): MyModel;
        getData<T>(type: string): T;
        getData<T>(type?: string): MyModel | T {
            // implementation
        }
    }
    

    (code in playground)

    【讨论】:

    猜你喜欢
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 2018-10-17
    • 2021-05-17
    • 2021-04-19
    • 2019-02-08
    相关资源
    最近更新 更多