在node环境中安装ts环境
安装ts环境
首先,需要使用npm安装ts全局环境,npm i -g typescript
安装完成后用tsc filname来编译ts文件
正常情况下,会报tsc错误,如下
解决办法,管理员运行powershell,输入set-ExecutionPolicy RemoteSigned命令,选择Y即可。
书写的ts文件index.ts
let say: string = "hello";
生成的js文件index.js
var say = "hello";
其中,ts文件中say会报错重复声明,因为ts并不知道index.js是生成的文件。另外index.js中的是var声明,具有全局作用域。
默认情况下,ts会做出下面几种假设
- 假设当前执行环境为dom(可以使用window和document函数)
- 如果代码中没有使用模块化(import、export)语句,便认为该代码是全局执行
- 编译的目标代码是ES3
有两种方式更改以上假设
- 使用命令行的时候,加上选项,这种情况使用较少
- 使用ts配置文件,更改配置选项
ts的配置文件
- 新建tsconfig.json文件
- 命令行 tsc --init
使用了配置文件后,使用tsc进行编译时,不能跟上文件名。如果跟上文件名,就将会忽略配置文件。
常用的配置
{
"compilerOptions": {
"target": "ES2016", //配置编译目标代码的版本标准
"module": "CommonJS", //配置编译目标代码的模块标准
"lib": ["ES2016"], //配置编译目标代码的环境
"outDir": "./dist"
},
"include": ["./src"]
}
目标代码环境lib配置,不提供node环境,所以使用console.log()函数会报错。
我们需要安装一个第三方库@types/node,@types是一个官方的类型库,其中包括了很多对js代
码的类型描述。
我们一般使用的第三方库是用js书写的,没有对类型的限制,可以在@types库中找,例如
Jquery:是用JS写的,没有类型检查
安装@types/jquery: 为jquery库添加类型定义
现在我们想运行ts文件,需要先使用tsc命令转换成index.js文件,再使用node ./dist/index.js命令运行。使用起来太繁琐。
使用第三方库简化流程
ts-node + nodemon
ts-node:将ts代码在内存中完成编译,同时完成于运行,不会生成额外的js文件
nodemon:监测文件的变化,在很多场景可以使用
使用方式:nodemon --exex ts-node src/index.ts
意思:监测文件变化、当文件发生变化,可以执行ts-node src/index.ts命令。
我们可以将此命令写进脚本
"scripts": {
"dev": "nodemon --exec ts-node src/index.ts"
},
其中,可以在命令行中对nodemon进行限制
-e ts:监听文件扩展名,ts
--watch src:监控的文件夹是src目录
因此,最终的命令为
"scripts": {
"dev": "nodemon --watch src -e ts --exec ts-node src/index.ts"
},
运行时只需要使用npm run dev即可