node.js - Typescript 存在带有保留字的命名空间

标签 node.js typescript paypal typescript-typings paypal-rest-sdk

我要升级"paypal-rest-sdk" typings 。此 SDK 有方法 payment.authorization.void(...);

void 方法在 @types/paypal-rest-sdk 上不存在,我正在尝试通过本地声明覆盖它。

代码示例:

declare module "paypal-rest-sdk" {
  export namespace authorization {
    function void(): any;
  }
}

export const paypal = Paypal;

但是这段代码不起作用,当我尝试调用 void 方法时, typescript 显示错误: Error:(94, 49) TS2339: Property 'void' does类型“typeofauthorization”上不存在。

最佳答案

我认为提供包含名为 void 的方法的类型定义的唯一方法(叹气)是使用变量而不是命名空间。

这是一个基于 Definely Typed 的当前定义的示例(但将 authorization 命名空间转换为变量)。

export var authorization: {
    get: (
        id: string,
        config: http.RequestOptions | CallbackFunction<AuthorizationResource>,
        cb?: CallbackFunction<AuthorizationResource>) => void;
    capture: (
        id: string,
        data: CaptureRequest | http.RequestOptions | CallbackFunction<CaptureResource>,
        config?: http.RequestOptions | CallbackFunction<CaptureResource>,
        cb?: CallbackFunction<CaptureResource>) => void;
    reauthorize: (
        id: string, data: Amount | http.RequestOptions | CallbackFunction<AuthorizationResource>,
        config?: http.RequestOptions | CallbackFunction<AuthorizationResource>,
        cb?: CallbackFunction<AuthorizationResource>) => void;
    void: (data?: any, config?: http.RequestOptions, cb?: CallbackFunction<any>) => void;
}

具体变化:

  • 导出命名空间授权更改为导出var授权
  • 命名空间主体转换为类型注释
  • 将每个导出函数转换为成员
  • 每个函数都转换为类型注释

可以在没有类型错误的情况下访问它:

...authorization.void(data, config, callback);

关于node.js - Typescript 存在带有保留字的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48992321/

相关文章:

javascript - 在 node.js 中导出函数的结果

node.js - 如何在 TypeScript 项目中配置 Knex.ts?

javascript - 导出单个或多个类型

typescript - 我如何在 typescript 上制作多类型属性接口(interface)

node.js - Firebase 的云函数 - getaddrinfo ENOTFOUND

paypal - 如何查看 PayPal Invoice API 发送的示例电子邮件

node.js - 我应该在 node.js 中 fork() 多少子进程?

jquery - 如何在nodeJs中使用nodemon调试应用程序

node.js - 如何在 Mongoose 中创建一个自动字段?

node.js - Paypal REST API : shipping_address does not understand utf8 characters