打字稿存在保留单词的名称空间



我想升级" 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);

最新更新