TypeScript vs JavaScript
TS是JS的超集,它是在JS的基础上去做的一些类型检测和一些相关的语法补充。
TypeScript
- TS带来了类型安全,和Java、C++一样
- TS包含了一些编译器,TS会支持一些JS的特性
- TS可以从id意义上更容易理解代码,围绕编码属性整理一些工具来提高开发效率
TS不仅是一门语言,更是生产力工具。
TS基础
基础类型
- boolean、number、string
- 枚举enum(TS中特有类型)
- any、unknown(any的替代类型,只允许被复制,反向复制只能复制给any、unknown类型)、void
- never(永远不存在值的类型)
- 数组类型[]
- 元组类型tuple
函数类型
TS定义函数类型时要定义输入参数类型和输出类型
输出可以自动推断,没有返回值时默认void
接口类型interface
接口是为了定义一个对象类型
对象类型:是对所有键值对的描述
类
和JS差不多,增加了一些定义
增加了public、private、protected修饰符
类中#标识是一个私有属性,外界无法调用
使用interface来约束类可以用implements关键字来进行接口方面的定义
TS进阶
高阶类型
- 联合类型|:如果一个类型定义上存在多个基础类型,使用联合类型进行一个取值
- 交叉类型&:如果在某个类上进行属性扩展,可以使用交叉类型取并集
- 类型断言:两种用法:通过标识符方式去进行一个属性前置的断言定义;通过as的方式
- 类型别名:给类型起个别名,使用type,与interface使用方式比较相似
泛型
组件不仅要支持当前的数据类型,还要支持未来的数据类型
泛型的语法是<>中写类型参数,一般用T表示
指定类型的两种方法:
- 定义要使用的类型
- TS类型推断,自动推导
操作符:
- typeof:获取类型
- keyof:获取所有键
- in:遍历枚举类型
- T[K]:索引访问
- extends:泛型约束
工具类型:
Partial<T>:可选Required<T>:必选Readonly<T>:只读
个人总结
在学习过程中,整体认识TypeScript,了解了相关的基础知识:基础类型、对象类型、接口、断言等,还学习了一些高阶知识:类、泛型、泛型的语法、指定类型的方法、相关操作符以及相关工具类型。TS的核心思维是先关注数据结构,再根据数据结构进行页面开发,它是添加了类型系统的JS,适用于任何规模的项目,可以帮助开发者在编写JS代码时提高代码质量和开发效率。TS有很多优势,TS最显著的优势就是类型系统,它提供了严格的类型检查,可以避免类型错误带来的问题。其次,在TS中,每个变量、函数参数和函数返回值都有明确的类型,这使得代码更加健壮、可维护和易于理解。由于TS具有严格的类型检查,因此编辑器可以更好地了解代码的结构,并提供更好的代码提示和自动补全功能。这可以帮助开发者更快速地编写代码,并减少代码错误。由于TS强调类型安全,因此代码更加规范、易于阅读和维护。在团队协作开发时,TS可以减少代码错误、提高代码可读性和可维护性。由于TS提供了严格的类型检查和更好的代码提示,因此它能够更好地支持工程化。在大型项目中,TS可以帮助开发者更快速地进行开发、测试和维护,并且减少出现错误的概率。TS的主要作用在于通过各种方式约束我们的代码。也可以这样理解:TS是一套约束规则。而我们只要掌握了这套约束规则,那么带来的另一个好处就是,我们可以更加容易的读懂别人的代码。