TypeScript 是可选的、静态的类型系统
- 为什么需要类型系统?
要构建大型的应用,会涉及大量的函数和接口,如果没有类型检查,会产生大量的调试成本。类型系统可以降低调试成本,从而降低开发成本
- 可选的
TS 是 JS 的超集。JS的所有功能都能够在TS中使用,增加的部分是类型系统。
- 静态的
TS代码 -> 编译 -> JS代码
变量、参数、函数的返回值
- 基本类型:boolean、number、string、object、Array、void、never、null和undefined
字面量类型 配合 联合类型使用,达到类似于枚举的效果
对象字面量可以更加细化的约束一个对象
let gender:"男"|"女";
type User = {
name:string
age:number
}
- 扩展类型:类型别名、枚举、接口、类
类型别名、接口,不产生编译结果
枚举、类,产生编译结果,枚举->编译->对象,TS类->JS类
TS类:属性列表、修饰符(readonly、访问修饰符:public、private、protected)
泛型:解除某个功能和类型的耦合
类型断言:开发者非常清楚某个东西的类型,但是TS难以分辨,开发者可以通过类型断言,告诉TS这里的确切类型。
鸭子辨型法,子结构辨型法
- 基本类型:完全匹配
- 对象类型:鸭子辨型法,字面量对象直接传递时,会有更严格的类型检查
- 函数类型:参数数量可以少,但不可以多。要求返回必须返回,不要求返回,你随意