我想升级" paypal-rest-sdk"键入。此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 not exist on type 'typeof authorization'.
我看到的唯一方法是提供一个名为 void
(sigh(的方法的类型定义,它使用了变量而不是命名空间。
这是一个基于当前定义的示例(但是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
- 名称空间的主体转换为类型注释
- 每个
export function
转换为成员 - 每个函数转换为类型注释
可以无需类型错误即可访问这一点:
...authorization.void(data, config, callback);