首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >导出全局声明会破坏现有的自定义模块声明。

导出全局声明会破坏现有的自定义模块声明。
EN

Stack Overflow用户
提问于 2022-09-30 22:55:27
回答 1查看 56关注 0票数 0

在我的NextJS web应用程序中,我已经为我安装的没有可用类型的包设置了一组自定义类型。我需要用第三方脚本中的模块扩展我的window

因此,我在我的Window文件中扩展并导出了global.d.ts接口。一旦我这样做了,我已经在全球范围内声明了any类型的包之一开始给我一个臭名昭著的Could not find a declaration file for module but it exists (TS7016)错误。当我删除新的全局window类型的新导出时,TS7016退出了。

如何将第三方模块的两种自定义类型与导出的自定义全局类型结合起来?

代码语言:javascript
运行
复制
// global.d.ts
declare module '@package-maintainer/*';
declare module '@package-maintainer-2/*';
declare module 'some-package';
declare module 'some-package-2';

export declare global {
  interface Window {
    thirdPartyModule: {
      aMethod: () => void
    };
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-30 22:55:27

经过几次测试后,我认为问题在于导出了一个模块,该模块将global.d.ts文件本身转换为一个模块,这与declare module不兼容。我不太清楚这背后的原因。我得再深入研究一下。

这里的解决方案是将自定义类型定义分为两个文件,一个用于全局定义,另一个用于模块定义:

代码语言:javascript
运行
复制
// global.d.ts
export declare global {
  interface Window {
    thirdPartyModule: {
      aMethod: () => void
    };
  }
}
代码语言:javascript
运行
复制
// modules.d.ts
declare module '@package-maintainer/*';
declare module '@package-maintainer-2/*';
declare module 'some-package';
declare module 'some-package-2';

使用这些分隔的,但都包含在我的tsconfig中,我能够扩展我的window对象,并为我的第三方包保留自定义强制到any

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73914648

复制
相关文章

相似问题

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