使用TypeScript来编写Node项目
之前一篇文章介绍了Nodejs:为什么要学习Nodejs,那么这篇文章我们来做学习Node之前的准备,使用TypeScript编写Node项目。
对于TypeScript就不用再多说了,我已经在很多文章中都提到了TypeScript,现在我是能使用TypeScript就尽量使用TypeScript,因为TypeScript已经是一种趋势,一种必然。
最近在学习Nodejs,就想着使用TypeScript来编写Node相关的东西。

从@types/node包的周下载量来看,使用TypeScript编写Node项目的工程是非常的多。
1. 步骤
1、新建一个项目文件夹,并且在文件夹中创建一个src文件夹,在其下面创建一个app.ts文件。
2、回到项目文件夹根目录,运行npm init --yes,直接生成package.json文件,也可以不加yes,手动填写项目的信息。
3、运行npm i typescript --save-dev。
4、全局安装两个库:
npm install nodemon ts-node -g5、在根目录下创建tsconfig.json。
{ "compilerOptions": { "module": "CommonJS", "target": "ES2015", "noImplicitAny": false, "strictNullChecks": true, "strict": true, "alwaysStrict": true, "sourceMap": false, "noImplicitReturns": true, "noImplicitThis": true, "pretty": true, "listFiles": true, "listEmittedFiles": true, "lib": [ "ESNext" ], "typeRoots": [ "./node_modules/@types" ] }, "include": [ "./**/*" ], "exclude": [ "node_modules", "**/*.spec.ts", "*.js" ]}6、项目结构
│ package-lock.json│ package.json│ tsconfig.json│└─src app.ts7、最后一步,在package.json文件scripts中,添加"start": "nodemon -e ts,tsx --exec ts-node src/app.ts",:
"scripts": { "start": "nodemon -e ts,tsx --exec ts-node src/app.ts",},然后使用npm run start,就可以开始愉快的使用TypeScript编写Node项目了,同时还支持热更新,你每次修改代码时会自动帮你重启项目。
8、如果要使用Node的库,需要引入:
npm i @types/node --save-dev2. Tslint
代码风格检测工具,虽然Tslint现在开始逐步不再维护,官方也推荐使用Eslint,但是社区还是拥有很高周下载量。

引入包:
npm install tslint tslint-config-prettier --save-dev在项目的根目录下输入tslint --init,会生成一个tslint.json文件,将文件编辑为:
{ "defaultSeverity": "error", "extends": [ "tslint:latest", "tslint-config-prettier" ], "jsRules": {}, "rules": {}, "rulesDirectory": []}这下就完成了Tslint的配置。
3. Eslint
现在Tslint官方大力推广Eslint,所以在这里给出最新的引入Eslint的方法。
这里使用的是Eslint+Prettier。之前使用过Airbnb的规则,发现有些特别不爽的地方,因为我还是喜欢使用双引号,而Prettier,完全符合我的喜好,再加上Prettier格式化插件,代码风格直接上天。
因为我使用的是TypeScript,所以这里要对TypeScript进行检测:
npm install @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-config-prettier eslint-plugin-prettier prettier --save-dev首先一股脑的将所有用到的包安装好。
然后在根目录下创建一个.eslintrc.js文件:
module.exports = { env: { browser: true, es2021: true, }, extends: [ "prettier", "prettier/@typescript-eslint", "plugin:prettier/recommended", ], parser: "@typescript-eslint/parser", parserOptions: { ecmaVersion: 12, sourceType: "module", }, plugins: ["@typescript-eslint"], rules: {},};完成收工!