一.安装配置typeScript
1.安装typeScript
npm i typescript -D
2.安装ts-node,ts-node是typeScript的执行环境,可以直接执行ts代码
npm i ts-node -D
3.在根目录创建tsconfig.json文件
{
"compilerOptions": {
"target": "ESNext",
"module": "commonjs",
"rootDir": "./src",
"declaration": true,
"outDir": "./dist",
"baseUrl": "./",
"paths": {
"@/*": ["src/*"],
},
"strict": true,
"noImplicitAny": false,
"noUnusedLocals": true,
"noUnusedParameters": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"moduleResolution": "node",
"typeRoots": [
"typings",
"node_modules/@types"
],
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"sourceMap": true
},
"include": [
"src/*",
],
"exclude": [
"node_modules/**",
"./dist"
],
}
4.将所有.js文件改为.ts文件
二、配置Eslint
1.安装依赖
npm i eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin -D
2.添加.eslintrc.json文件
{
"env": {
"es6": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
},
"plugins": [
"@typescript-eslint"
],
"rules": {
"no-unused-vars": 0
}
}
三、其他
1.安装@types/node
npm i @types/node -D
一般像koa的模块没有ts文件,使用的commonjs导出的js模块,所以没法用ts进行类型检测,所以要使用声明文件来处理这个问题。
npm i @types/koa -D
4.目录结构
- 📁dist 编译后的文件
- 📁assets 存放项目的图片、视频等资源文件
- 📁src 源码目录
- 📁controller api入口
- 📁mongodb 数据库
- 📄db.ts 连接数据库
- 📁middlewares 中间件
- 📄jwt.ts 鉴权
- 📄response.ts 封装响应
- 📁service 业务逻辑层
- 📄app.ts 入口文件
- 📄.eslintrc.json eslint配置
- 📄tsconfig.json typeScript配置
- 📄README.md 项目说明
5.项目运行
- 运行报错ERR_UNKNOWN_FILE_EXTENSION
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for XXX
at new NodeError (internal/errors.js:322:7)
at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:71:15)
at Loader.getFormat (internal/modules/esm/loader.js:105:42)
at Loader.getModuleJob (internal/modules/esm/loader.js:243:31)
at async Loader.import (internal/modules/esm/loader.js:177:17)
code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "ts-node -T src/app.ts"
},
- 然后运行npm start就可以了
最后就是补充interface消除any