TypeScript与JavaScript区别
| TypeScript | JavaScript |
|---|---|
| JavaScript的超集,用于解决大型项目的代码复杂性 | 一种脚本语言,用于创建动态网页 |
| 强类型,支持静态和动态类型 | 动态弱类型语言 |
| 可以在编译期间发现并纠正错误 | 只能运行时发现错误 |
| 不允许改变变量的数据类型 | 变量可以被赋值成不同类型 |
TS基础
1.基础类型
(1)boolean、number、string
(2)undefined、null
(3)any、unknow、void
(4)never
(5)数组类型[]
(6)元素类型tuple
2.函数类型
(1)定义:TS定义函数类型时要定义输入参数类型和输出类型
(2)输入参数:参数支持可选参数和默认值
(3)输出参数:输出可以自动推断,没有返回值时,默认为void类型
(4)函数重载:名称相同但参数不同,可以通过重载支持更多类型
3.interface
(1)定义:接口是为了定义对象类型
(2)特点:
1)可选属性:?
2)只读属性:readonly
3)可以描述函数类型
4)可以描述自定义类型
(3)总结:接口非常灵活duck typing
4.类
(1)定义:写法和JS差不多,增加了一些定义
(2)特点:
1)增加了public、private修饰符
2)抽象类:
·只能被继承,不能被实例化
·作为基类,抽象方法必须被子类实现
TS进阶
1.高级类型
(1)联合类型|
(2)交叉类型&
(3)类型断言
(4)类型别名
1)定义:给类型起个别名
2)相同点:
1.都可以定义对象或函数
2.都允许继承
3)差异点
1.interface是TS用来定义对象,type是用来定义别名方便使用
2.type可以定义基本类型,interface不行
3.interface可以合并重复声明,type不行
2.泛型-基本使用
(1)泛型的语法是<>里面写参数,一般用T表示
(2)使用时有两种方式指定类型
1)定义要使用的类型
2)通过TS类型推断,自动推导类型
(3)泛型的作用是临时占位,之后通过传来的类型进行推导
3.基本操作符
(1)typeof:获取类型
(2)keyof:获取所有键
(3)in:遍历枚举类型
(4)T[K]:索引访问
(5)extend:泛型约束
4.常用工具类型
(1)Partial:将类型属性变为可选
(2)Required:将类型属性变为必选
(3)Readonly:将类型属性变为只读
(4)Pick、Record
5.声明文件
(1)declare:三方库需要类型声明文件
(2).d.ts:声明文件定义
(3)@types:三方库TS类型包
(4)tsconfig.json:定义TS的配置