You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript:paypal-rest-sdk补充authorization.void类型声明失败及保留字问题

解决PayPal REST SDK类型声明缺失与保留字冲突问题

我之前也碰到过类似的TypeScript类型声明坑,尤其是碰到保留字的时候特别闹心,给你一套亲测可行的解决方案:

1. 正确扩展类型声明(补上void方法)

因为void是TypeScript的保留字,不能直接当方法名声明,所以得用字符串包裹的方式绕开冲突。同时要使用TypeScript的**模块扩展(Module Augmentation)**来补充原有类型,而不是重新定义整个命名空间——这也是很多人本地声明失效的核心原因。

在项目里创建一个本地类型声明文件,比如src/types/paypal-rest-sdk.d.ts,写入以下内容:

import type { paypal } from 'paypal-rest-sdk';

declare module 'paypal-rest-sdk' {
  namespace paypal {
    namespace payment {
      namespace authorization {
        // 用引号包裹保留字,补充void方法的类型声明
        function "void"(
          authorizationId: string,
          config?: paypal.Configuration,
          callback?: paypal.Callback<paypal.Authorization>
        ): void;

        // 如果你的SDK支持Promise调用,补充这个重载
        function "void"(
          authorizationId: string,
          config?: paypal.Configuration
        ): Promise<paypal.Authorization>;
      }
    }
  }
}

2. 确保TypeScript识别声明文件

检查tsconfig.json配置,要让TypeScript扫描到这个本地声明文件:

{
  "compilerOptions": {
    // 你的其他编译选项
    "typeRoots": ["./node_modules/@types", "./src/types"] // 可选,明确指定类型文件路径
  },
  "include": [
    "src/**/*",
    "src/types/**/*.d.ts" // 确保本地声明文件被包含
  ]
}

3. 正确调用void方法

因为void是保留字,直接用.调用会报错,所以要用方括号语法调用:

import paypal from 'paypal-rest-sdk';

// 回调风格调用
paypal.payment.authorization["void"]("your-authorization-id", (err, authResult) => {
  if (err) {
    console.error('撤销授权失败:', err);
    return;
  }
  console.log('授权已成功撤销:', authResult);
});

// Promise风格调用(如果SDK支持)
paypal.payment.authorization["void"]("your-authorization-id")
  .then(authResult => console.log('授权已成功撤销:', authResult))
  .catch(err => console.error('撤销授权失败:', err));

为什么之前的声明没生效?

大概率是这几个原因:

  • 没有用模块扩展,而是重新定义了整个paypal命名空间,导致覆盖了原有类型而非补充
  • 声明文件的位置不对,TypeScript没扫描到
  • 直接用void当方法名,没加引号,触发了保留字语法冲突

内容的提问来源于stack exchange,提问作者Yegor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:21:37