TS 初体验
- 下载、安装 Node
- 全局安装 typescript 依赖包:
npm i typescript -g
- 创建、编写 .ts 文件(TS 支持 JS 语法,所以可以在 .ts 文件里面写 JS 代码)
编译 TS 文件
- 执行
tsc ./XXX.ts
编译 .ts 文件。编译成功后,即能生成对应的 .js 文件
- 如果同时打开 TS 文件及其编译出来的 JS 文件,会抛出 “同名变量冲突” 的错误。原因:在 Node 环境中,如果文件没有使用模块化相关的代码,则该文件下的代码都在全局作用域下,同一作用域下当然也就不能存在相同的变量名啦~ 此时可执行
tsc --init
初始化 TS 配置文件 tsconfig.json,创建该文件后就不会再飘红啦~ - 可以使用
tsc ./XXX.ts -w
编译并监听 TS 文件。此时,如果 TS 文件有改动,编译器会自动重新编译。
(自动) 编译多个 TS 文件:
tsc --init
初始化 TS 配置文件 tsconfig.json- 直接执行
tsc
即可编译当前目录下所有的 TS 文件
- 可以使用
tsc -w
编译并监听当前目录下所有的 TS 文件
执行 TS 代码
npm i ts-node -g
ts-node ./XXX.ts
如果需要 ts-node 识别 tsconfig.json,需要执行 ts-node ./XXX.ts --files
如果 tsconfig.json 配置了路径别名 "paths": { "@/*": ["./*"] }
,为使路径别名可用:
需要安装 tsconfig-paths 依赖包并执行 ts-node -r tsconfig-paths/register ./XXX.ts --files
nodemon 的使用:
npm i nodemon -g
nodemon --exec ts-node ./XXX.ts
:此时 nodemon 会监听 XXX.ts 的变更,如果有更新则重新执行该文件
使用 nodemon 时可能会报错,解决方法:以管理员身份运行 powerShell,执行 set-ExecutionPolicy RemoteSigned
即可
使用 TS 约束类型
约束变量
TS 可以约束【变量】的类型:
let num: number; // 显式约束类型: 先声明、后赋值
let str = "superman"; // 隐式约束类型: 声明、并赋值 (TS 会自动识别类型, 并对变量进行约束)
以上 2 种写法,都会约束【变量】的类型。如果变量值的类型不对,会直接飘红
- 有 3 种情况,变量的类型会被推断为
any
:
let a;
let b = undefined;
let c = null;
约束函数
TS 可以约束【函数参数】&【函数返回值】的类型:
function sum(num1: number, num2: number): number {
return num1 + num2;
}
let result = sum(100, 200); // 此时变量 result 的类型会被隐式约束为 number
- 如果不指定【函数参数】的类型,则为
any
- 如果不指定【函数返回值】的类型,TS 会根据
return
语句自动识别类型