在调整typescript项目结构,全局变量尽可能少用,但仍是必不可少的,既要合理的引入,又要能用上vscode的智能提示。上篇日志已经记录了,在vscode中开发,全局变量的定义与声名是分开的,要作好对应。mysql
├── src │ ├── app.ts │ ├── common │ │ └── globUtils.ts │ ├── config │ │ └── log4js.ts │ ├── globals.d.ts │ ├── index.ts │ └── inits │ ├── global.ts │ └── tasks.ts ├── tsconfig.json ├── tslint.json
export default class GlobUtils { isDev() { return global.NODE_ENV !== 'prod' } }
注意事项:git
import * as lodash from 'lodash' import * as Bluebird from 'bluebird' import GlobUtils from '../common/globUtils' export default { async init() { Object.assign(global, { ROOT_PATH: process.cwd(), NODE_ENV: process.env.NODE_ENV || 'dev', //dev - 开发; prod - 生产; test - 测试; Promise: Bluebird, __: lodash, globUtils: new GlobUtils(), }) } }
注意事项:github
import { Logger } from 'log4js' import GlobUtils from './common/globUtils' import * as lodash from 'lodash' type LODASH = typeof lodash declare global { namespace NodeJS { interface Global { logger: Logger, NODE_ENV: string, ROOT_PATH: string, globUtils: GlobUtils, __: LODASH, } } }
注意事项:sql
用@types/bluebird-global替换@types/bluebird,便可完成替换。咱们只须要在代码定义中增长它的定义就行了。
注意事项:typescript
代码是这个项目的基础,此项目我准备将express+mysql的成功经验移植到koa2中来。express
https://github.com/zhoutk/gels
git clone https://github.com/zhoutk/gels cd gels git checkout 9ea084f yarn tsc -w 用vscode打开项目,并按F5运行
终于迈入typescript坑中,痛并快乐着!json