将现有的NodeJS项目转换为TypeScript时,如何强制将所有文件视为模块

时间:2018-07-26 16:04:45

标签: node.js typescript migration

我是TypeScript的新手,正在研究将现有的,符合ES2017的大型NodeJS代码库迁移到它的情况。

这是我的tsconfig.json的样子:

{
    "compilerOptions": {
        "module": "commonjs",
        "moduleResolution": "node",
        "outDir": "./built",
        "allowJs": true,
        "target": "ES2017",
    },
    "include": [
        "**/*"
    ],
    "exclude": [
        "**/node_modules/**/*",
        "built"
    ]
}

如果我将所有.js文件重命名为具有.ts扩展名,我会遇到this issue并从Cannot redeclare block-scoped variable看到很多tsc错误,因为TypeScript似乎无法判断我的文件是模块(每个都有自己的作用域)还是脚本(都共享一个作用域)。

这些“虚拟” /死记硬背错误使我看不到其他真正的错误,这些错误需要作为TypeScript迁移的一部分进行修复。

因此,我的问题是,作为将现有JavaScript代码库迁移到TypeScript的一部分,解决此问题的最明智和正确的方法是什么?

我想到了两个选择:

  1. 启用allowJs并缓慢地将每个.js文件一次重命名为.ts,并在操作时调整每个文件的imports / exports。重命名每个文件的时间,以向TypeScript指示该文件是模块,并且不会与其他.ts文件冲突。 (现有的.js文件将被复制而不受影响。)

  2. 将所有.js文件重命名为.ts,然后在每个文件中放入一个罐头export {};作为起点。这似乎并不理想。

这些选项都不是理想的。是否有更直接的方法告诉tsc将所有文件视为模块,以防止其认为它们将共享相同的作用域?

0 个答案:

没有答案