为什么使用TS
TS与JS相比较
TS是JS的超集,本质上TS是JS上增加强类型和增加面向对象的功能。
TS:JavaScript的超集,用于解决大型项目的代码复杂性
强类型,支持静态和动态类型
可以在编译时发现并纠正错误
不允许改变变量的数据类型
JS:一种脚本语言,用于创建动态网页
动态弱类型语言
只能在运行时发现错误:
变量可以被赋值成不同类型
总之:
1. TS更早(写代码的同时)发现错误, 减少找 Bug、改 Bug 时间 ,提升开发效率。
2. 程序中任何位置的代码都有代码提示 ,随时随地的安全感,增强了开发体验。
3. 强大的类型系统提升了代码的可维护性,使得重构代码更加容易。
4. 支持最新的 ECMAScript 语法 ,优先体验最新的语法,让你走在前端技术的最前沿。
5. TS 类型推断机制, 不需要在代码中的每个地方都显示标注类型 ,让你在享受优势的同时,尽量降低了成本。
JS特性
类型安全
TS支持JS特性
工具链完善
TS基础
基础类型:
1. boolean, number, string
2. 枚举类型enum
3. any, unknown, void
4. never
5. 数组类型[]
6. 元组类型tuple:数组的特殊类型
函数类型
定义: TS定义函数类型时要定义输入参数类型和输出类型
输入参数:参数支持可选参数和默认参数
输出参数:输出可以自动推断,没有返回值时,默认为void类型
函数重载:名称相同但参数不同,可以通过重载支持多种类型
Interface
定义:接口是为了定义对象类型
特点:
可选属性: ?
只读属性: readonly
可以描述函数类型
可以描述自定义属性:当不确定属性具体值时,可以把key当做key string来自定义其属性。
总结:接口非常灵活duck typing
类
定义:类似JS,但增加了一些定义。
特点:
-增加了public、 private、 protected修饰符
-抽象类:
-只能被继承,不能被实例化
-作为基类,抽象方法必须被子类实现
-interface约束类,使用implements关键字