代码之家  ›  专栏  ›  技术社区  ›  OliverRadini

在函数类型中使用泛型

  •  1
  • OliverRadini  · 技术社区  · 7 年前

    我想使用泛型为函数创建一个接口,这样函数接受两个参数,并返回第一个参数的类型或两个参数的并集。我原以为可以这样做:

    declare interface CustomMerge {
      (x: Partial<T1>, y: Partial<T1 | T2>): T1 | T1 & T2;
    }
    

    但是我在这里得到了各种各样的关于意外符号的错误,所以我怀疑到目前为止我所做的工作还远远不够。用typescript可以吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Igor Soloydenko    7 年前

    你必须申报 type variables 在任何地方使用它们之前,包括函数签名。为此,您有两个选项:

    在方法级别声明

    declare interface CustomMerge {
       <T1, T2>(x: Partial<T1>, y: Partial<T1 | T2>): T1 | T1 & T2;
    // ^^^^^^^^
    }
    

    在接口级别声明

    declare interface CustomMerge<T1, T2> {
    //                           ^^^^^^^^
      (x: Partial<T1>, y: Partial<T1 | T2>): T1 | T1 & T2;
    }
    
    推荐文章