JavaScript 是一门动态弱类型语言,对变量的类型非常宽容。JavaScript使用灵活,开发速度快,但是由于类型思维的缺失,一点小的修改都有可能导致意想不到的错误,使用TypeScript可以很好的解决这种问题。TypeScript是JavaScript的一个超集,扩展了 JavaScript 的语法,增加了静态类型、类、模块、接口和类型注解等功能,可以编译成纯JavaScript。本文将介绍如何在node服务中使用TypeScript。
一、 安装依赖
npm install typescript --save
npm install ts-node --save
npm install nodemon --save
或者
yarn add typescript
yarn add ts-node
yarn add nodemon
另外,还需要安装依赖模块的类型库:
npm install @types/koa --save
npm install @types/koa-router --save
…
或者
yarn add @types/koa
yarn add @types/koa-router
…
二、 tsconfig.json
当使用tsc命令进行编译时,如果未指定ts文件,编译器会从当前目录开始去查找tsconfig.json文件,并根据tsconfig.json的配置进行编译。
1. 指定文件
可以通过files属性来指定需要编译的文件,如下所示:
{
"files": [
"src/server.ts"
]
}
另外也可以通过使用"include"和"exclude"属性来指定,采用类似glob文件匹配模式,如下所示:
{
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
支持的通配符:
-
- 匹配0或多个字符(不包括目录分隔符)
- ? 匹配一个任意字符(不包括目录分隔符)
- **/ 递归匹配任意子目录
2. 常用配置
compilerOptions 属性用于配置编译选项,与tsc命令的选项一致,常用的配置如下所示:
{
"compilerOptions": {
// 指定编译为ECMAScript的哪个版本。默认为"ES3"
"target": "ES6",
// 编译为哪种模块系统。如果target为"ES3"或者"ES5",默认为"CommonJS",否则默认为"ES6"
"module": "CommonJS",
// 模块解析策略,"Classic" 或者 "Node"。如果module为"AMD"、"System"或者"ES6",默认为"Classic",否则默认为"Node"
"moduleResolution": "Node",
// 是否支持使用import cjs from 'cjs'的方式引入commonjs包
"esModuleInterop": true,
// 编译过程中需要引入的库。target为"ES5"时