typescript定义namespace一个后,在使用webpack打包时如何处理

新手上路,请多包涵
  1. 现在有一个全局对象gapi通过script标签在dom中引入,环境:react+typescript+webpack
  2. 示例代码及已经做过的尝试如下

    // gapi.d.ts
    declare namespace gapi {
        ...
    }
    
    // index.tsx
    ...
    // 打包时写成这样会报错 Property 'gapi' does not exist on type 'Window'.
    window.gapi.load('auth2', function(): void{
        auth2 = window.gapi.auth2.init({
          client_id: `${config.googleClientId}.apps.googleusercontent.com`,
          cookie_policy: 'single_host_origin',
        });
        attachSignin(document.querySelector(selector));
      });
    
    // 以下代码可以打包通过,但是gapi的类型变为any
    (window as any).gapi.load('auth2', function(): void{
        auth2 = (window as any).gapi.auth2.init({
          client_id: `${config.googleClientId}.apps.googleusercontent.com`,
          cookie_policy: 'single_host_origin',
        });
        attachSignin(document.querySelector(selector));
      });
    
    ...
  3. 请问如何才能两全其美,既不丢失gapi的类型,又能打包通过
阅读 1.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题