打字稿模块:导出接口及其所有道具

时间:2018-10-31 12:21:59

标签: reactjs typescript module interface

我有一个导出了多个功能的模块。我的模块声明如下:

declare module 'my-module' {
  export function getUserAvailablePaymentMethods(requestData: {
    merchantId: number,
  }): Promise<any>

  // etc...
}

这很好。总体而言,我还想从该模块中导出具有相同功能的接口。像这样:

declare module 'my-module' {
  export interface InjectedActions {
    getUserAvailablePaymentMethods: (requestData: {
      merchantId: number,
    }) => Promise<any>
  }

  export function getUserAvailablePaymentMethods(requestData: {
    merchantId: number,
  }): Promise<any>

  // etc...
}

之所以这样做,是因为有时我需要键入我的react组件,然后需要一个接口。

问题

我不想像我在示例中那样两次编写所有函数。我尝试这样做:

declare module 'my-module' {
  export function getUserAvailablePaymentMethods(requestData: {
    merchantId: number,
  }): Promise<any>

  export interface InjectedDevcodeActions {
    getUserAvailablePaymentMethods: getUserAvailablePaymentMethods
  }
  // etc...
}

但这不起作用。我得到:“找不到名称'getUserAvailablePaymentMethods'。”。

是否可以在不编写两次函数的情况下实现这一目标?

1 个答案:

答案 0 :(得分:1)

getUserAvailablePaymentMethods不能直接用作类型。如果需要,请使用typeof

declare module 'my-module' {
  export function getUserAvailablePaymentMethods(requestData: {
    merchantId: number,
  }): Promise<any>

  export interface InjectedDevcodeActions {
    getUserAvailablePaymentMethods: typeof getUserAvailablePaymentMethods
  }
  // etc...
}

This issue是为了获得更好的错误消息。