我有一个现在非常安静的javascript节点应用程序,我想切换到打字稿以加快开发速度并更好地维护代码。我在命令中使用nodemocha类型安装了打字稿

npm i typescript
npm i @types/node
npm i @types/mocha


我使用一个tsconfig.json文件,如下所示:

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "outDir": "dist",
        "sourceMap": true
    },
    "files": [
        "./node_modules/@types/mocha/index.d.ts",
        "./node_modules/@types/node/index.d.ts"
    ],
    "include": [
        "src/**/*.ts",
    ],
    "exclude": [
        "node_modules"
    ]
}


我在"tsc": "tsc"中添加了package.json脚本,以使用npm run tsc命令编译代码。

这是我的项目架构:

- dist // created at compile time
- src
--- server.ts
--- configs
----- config.js
--- // other subdirectories
- package.json
- tsconfig.json


当我编译代码时,它将创建一个dist文件夹,其中仅包含已编译的server.ts文件,这是我重命名为.ts的唯一文件。因此,当我使用node dist/server.js启动编译的应用程序时,所有其他文件都丢失了,该应用程序崩溃了。

我的问题是:我是否必须将整个应用程序切换为打字稿,将每个文件重命名为.ts并更改导入,还是有办法逐步实现并保留一些javascript文件?

最佳答案

就像Je​​ff在我的帖子评论中提到的那样,这就是您逐步转换为打字稿的方式。根据他提供的链接Migrating from javascript documentation,这是我设法使其工作的方式。

我将tsconfig.json文件更改为:

{
    "compilerOptions": {
        "allowJs": true, // <-- option to allow js files as input in the ts compiler
        "target": "es6",
        "module": "commonjs",
        "outDir": "./dist",
        "sourceMap": true
    },
    "files": [
        "./node_modules/@types/mocha/index.d.ts",
        "./node_modules/@types/node/index.d.ts"
    ],
    "include": [
        "./src/**/*",
    ],
    "exclude": [
        "node_modules"
    ]
}


我还更改了项目的package.json以启动应用程序,并从已编译的文件夹(在本例中为dist)运行测试:

...
"scripts": {
    "start": "node ./dist/server.js",
    "test": "tsc && ./node_modules/.bin/mocha --recursive ./dist/test",
    "tsc": "tsc",
},
...

10-08 13:16
查看更多