TypeScript

85 阅读1分钟

内容概要

  • 强类型与弱类型
  • 静态类型与动态类型
  • javaScript 自有类型系统的问题
  • Flow 静态类型检查方案
  • TypeScript 语言规范与基本应用

强类型与弱类型

  • 强类型不允许随意的隐式类型转换,而弱类型是允许的
  • 变量类型允许随时改变的特点不是强弱类型的差异

静态类型与动态类型

  • 静态类型:一个变量声明时就是准确的, 声明过后,它的类型就不允许再修改, 静态类型在编译时做检查

  • 动态类型:在运行阶段才能够明确变量类型,而且变量的类型可以随时发生变化,变量没有类型, 变量存放的值有类型。

  • 从类型安全的角度,一般将编程语言分为,强类型和弱类型

  • 从类型检查的角度来看, 一般分为静态类型和动态类型

image.png

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 强类型的问题

  1. 错误更早暴露
  2. 代码更智能, 编码更准确
  3. 重构更牢靠
  4. 减少不必要的类型判断

Flow

javaScript 的类型检测器