Flow和TypeScript的功能
都是用来做JavaScript类型检查的。JavaScript是一种弱类型的,动态类型检查的语言。
弱类型 和 强类型
弱类型:
在定义变量的时候,可以为变量赋任何值,变量的数据类型是可变的。
强类型:
在声明变量的时候,一旦给变量赋值,变量的数据类型就确定。如果之后要赋值为其他类型的数据,必须强制进行数据类型的转换。
动态类型 和 静态类型
动态类型的类型检查在代码运行时进行,静态类型的类型检查在编译时进行。
动态类型可能带来的问题:
- 运行功能有偏差
function sum(a, b) {
return a + b;
}
console.log(sum("kkk", 1))
如上,本想两数求和,却因为传参问题,变成了字符串的拼接
- 代码中的错误只有在运行中发现
静态类型的优势和问题:
优势:
- 编译时发现代码中的bug
- 提高代码的可读性
- 减少了复杂的错误处理逻辑
- 方便代码重构
- 增强IDE(集成开发环境)的功能
问题:
- 代码量增加
- 可能会降低开发效率