首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有保留字的Typescript exist命名空间

带有保留字的Typescript exist命名空间
EN

Stack Overflow用户
提问于 2018-02-26 23:58:06
回答 1查看 224关注 0票数 2

我想升级"paypal-rest-sdk" typings。这个SDK的方法是payment.authorization.void(...)

@types/paypal-rest-sdk上不存在void方法,我正尝试用局部声明来覆盖它。

代码示例:

代码语言:javascript
复制
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'.

EN

回答 1

Stack Overflow用户

发布于 2018-02-27 01:58:16

我所能看到的提供包含名为void (sigh)的方法的类型定义的唯一方法是使用变量而不是命名空间。

下面是一个基于确定类型(但将authorization命名空间转换为变量)上的当前定义的示例。

代码语言:javascript
复制
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更改为注解主体转换为类型annotation
  • each export function转换为成员
  • 每个函数转换为类型注解

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

代码语言:javascript
复制
...authorization.void(data, config, callback);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48992321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档