我有一个现在非常安静的javascript节点应用程序,我想切换到打字稿以加快开发速度并更好地维护代码。我在命令中使用node
和mocha
类型安装了打字稿
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文件? 最佳答案
就像Jeff在我的帖子评论中提到的那样,这就是您逐步转换为打字稿的方式。根据他提供的链接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",
},
...