gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:06 25 4
gpt4 key购买 nike

我要升级"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在类型“typeof authorization”上不存在。

最佳答案

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

这是一个基于 Definitely 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;
}

具体变化:

  • export namespace authorization 更改为 export var authorization
  • 命名空间主体转换为类型注解
  • 每个导出函数转换为成员
  • 每个函数转换为类型注解

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com