声明用于生成类型文件, isolatedModules 表示所有文件都应该是一个单独的模块。为什么这两个选项一起使用?
error TS5053: Option 'declaration' cannot be specified with option 'isolatedModules'.
答案 0 :(得分:1)
在Max Heiber在评论中提到的问题中,来自TypeScript团队posted the following answer的Wesley Wigham(添加了重点):
原因与您不能在隔离模块中使用const枚举的原因相同:类型信息。由于隔离的模块会单独编译每个文件而没有其依赖的文件类型,因此我们将写入声明文件的任何推断类型都可能不正确,因为它们的计算将缺少其余文件的信息。汇编。声明发射的子集很有限,但是在输出中不会推断出可以支持的类型。
换句话说,*.d.ts
没有提供足够的类型信息来创建完整而准确的tsconfig
声明文件。
问题注释还提供了一种建议的解决方法,其中有一个{
"compilerOptions": {
"incremental": true,
"isolatedModules": true
}
}
用于使用隔离的模块进行编译,还有一个tsconfig用于创建声明文件。
tsconfig.json
{
"extends": "./tsconfig",
"compilerOptions": {
"emitDeclarationOnly": true,
"isolatedModules": false,
"declaration": true
}
}
tsconfig-for-declarations.json
error_logs