我要升级"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/