为什么声明不能与typescript中的isolatedModules一起使用?

时间:2018-03-21 10:07:57

标签: typescript

声明用于生成类型文件, isolatedModules 表示所有文件都应该是一个单独的模块。为什么这两个选项一起使用?

error TS5053: Option 'declaration' cannot be specified with option 'isolatedModules'.

1 个答案:

答案 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