声明用于生成类型文件,而IsolatedModules表示所有文件都应该是一个单独的模块.为什么这两个选项一起使用?
error TS5053: Option 'declaration' cannot be specified with option 'isolatedModules'.
Run Code Online (Sandbox Code Playgroud)
在 Max Heiber 在评论中引用的问题中,TypeScript 团队的 Wesley Wigham发布了以下答案(强调已添加):
原因与不能在隔离模块中使用 const 枚举的原因相同:类型信息。由于隔离模块单独编译每个文件,而没有它所依赖的文件类型,因此我们写入声明文件的任何推断类型都可能是不正确的,因为它们的计算将丢失其余编译中的信息。然而,声明的发射有一个有限的子集,其中在输出中没有推断出可以支持的类型。
换句话说,isolatedModules没有提供足够的类型信息来创建完整且准确的*.d.ts声明文件。
问题评论还提供了一种建议的解决方法,其中我们有一个tsconfig用于使用独立模块进行编译,第二个 tsconfig 用于创建声明文件。
tsconfig.json
{
"compilerOptions": {
"incremental": true,
"isolatedModules": true
}
}
Run Code Online (Sandbox Code Playgroud)
tsconfig-for-declarations.json
{
"extends": "./tsconfig",
"compilerOptions": {
"emitDeclarationOnly": true,
"isolatedModules": false,
"declaration": true
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |