内容概要
- 强类型与弱类型
- 静态类型与动态类型
- javaScript 自有类型系统的问题
- Flow 静态类型检查方案
- TypeScript 语言规范与基本应用
强类型与弱类型
- 强类型不允许随意的隐式类型转换,而弱类型是允许的
- 变量类型允许随时改变的特点不是强弱类型的差异
静态类型与动态类型
-
静态类型:一个变量声明时就是准确的, 声明过后,它的类型就不允许再修改, 静态类型在编译时做检查
-
动态类型:在运行阶段才能够明确变量类型,而且变量的类型可以随时发生变化,变量没有类型, 变量存放的值有类型。
-
从类型安全的角度,一般将编程语言分为,强类型和弱类型
-
从类型检查的角度来看, 一般分为静态类型和动态类型
javaScript 自有类型系统的问题
- javaScript 是动态类型且是弱类型, 语言严谨度比较薄弱,缺乏了系统类型的可靠性
- javaScript 是脚本语言,没有编译环节, 直接运行
javaScript 弱类型的问题
/*
* @Descritption: javaScript 弱类型产生的问题
*/
// const obj = {}
// obj.foo() // error
// setTimeout(()=>{
// obj.foo()
// },1000) // error
// function sum(a, b){
// return a+b
// }
// console.log(sum(100,100)) // 200
// console.log(sum('100',100)) // 100100
// ========================
const obj = {}
obj[true] = 100
console.log(obj['true']) // 100
javaScript 强类型的问题
- 错误更早暴露
- 代码更智能, 编码更准确
- 重构更牢靠
- 减少不必要的类型判断
Flow
javaScript 的类型检测器