JavaScript 是一种 弱类型 的,动态类型 检查的语言。
弱类型
在定义变量的时候,我们可以为变量赋值 任何数据,变量的数据类型不是固定死的,这样的类型叫做 弱类型,js 就是 弱类型的 语言;
强类型
在声明变量的时候,一旦给变量赋值,那么变量的数据类型就已经确定,之后如果要给该变量赋值其他类型的数据,需要进行强制数据类型转换, Java 就是 强类型语言。
动态类型 和 静态类型
动态类型 和 静态类型 的 核心区别: 动态类型 的类型检查会在代码 运行 的时候进行(比如 js),而 静态类型 的检查则实在 编译 时进行的(比如 java);
动态类型的 问题: 代码 运行时 才会检查到错误, 所以代码中的错误只能在运行时候才会被发现;
静态类型的 优势:提早发现代码中的错误、提高代码的可读性(定义了变量的类型,就能增加代码的可读性)、减少复杂的错误处理逻辑(有些地方需要对传入的参数做边界错误的处理,而 静态类型就能省略这段逻辑的判断)、便于代码重构、 增强 IDE 的功能(有提示功能);
静态类型的 问题: 增加代码量、需要花时间掌握类型、可能会降低开发效率;
TypeScript
TypeScript 是JS 超集,简单来说就是 当前任何 JS 都是合法的 TS 代码,就是 兼容 js 的写法;
TypeScript 安装
npm install typescript -g
安装好后会提供一个 tsc 命令 来编译 ts 文件, 写好的 ts 文件 可以通过命令:
tsc 文件名字
将文件编译成 js 文件。
或者全局安装 ts-node 就能直接 执行 node 文件名称
tsc --init 创建 配置文件
设置配置项
* target: 指的就是将 ts 代码要转换成哪个版本的 js 代码 es5 es3;
* module: 指的就是将 ts 代码转换成 js 代码之后,使用的模块化的标准是什么;
* outDir: 指的就是将 ts 代码转换成之后, js 代码存放的文件夹路径;
* rootDir: 指的就是要将哪个目录中的ts代码进型转换,ts代码的存放路径;
* strict: 是否要将ts代码转换为严格模式的js代码。
使用配置文件
tsc -p ./tsconfig.json