SweetAlert 当前的类型定义不提供“子模块”的类型。
当您使用declare module
syntax 像这样 https://github.com/sweetalert2/sweetalert2/blob/master/sweetalert2.d.ts#L1,您“立即”输入整个包(用户从导入时得到的内容)^sweetalert2$
),但是您没有准确描述 dist/ 中各个编译文件中的内容,所以是的,它们不能明确定位。
尝试删除declare module
完全阻止你的copied文件。然后,使用declare namespace Swal
,它会起作用的。
我们应该能够修改 sweetalert2 的声明文件,以便简单导入和子文件导入都可以工作。
看看我如何输入 graphql-compose 以便这成为可能:graphql 撰写 https://github.com/graphql-compose/graphql-compose
每个 .js 文件都有一个 .d.ts 对应文件,并且不再有一个文件来描述整个模块declare module
.
编辑:我在你的重现中尝试了这种方法,效果很好,我们可以输入sweetalert2.all.js
以及。不过,以下解决方案可能更简单(文件更少,构建脚本更简单)。 1:1 映射方法更好,但可能更适合较大的库。
另一种可能性是添加declare module 'sweetalert2/dist/{**}'
单曲条目sweetalert2.d.ts
文件,重新导出每个的默认模块内容dist/
变体:
declare module 'sweetalert2' {
// Current contents of the file, unchanged
}
declare module 'sweetalert2/dist/sweetalert2.js' {
export * from 'sweetalert2';
// "export *" does not matches the default export, so do it explicitly.
export { default } from 'sweetalert2';
}
declare module 'sweetalert2/dist/sweetalert2.all.js' {
export * from 'sweetalert2';
export { default } from 'sweetalert2';
}