深入浅出TS
一、ts和js的差异 1、js包含于ts,ts是js的扩展 2、ts的作用: 二、TS的基础类型 (1)boolean、number、string、 (2)枚举enum、包含常量和异构的枚举 (3)any、unknown、void:unknown是any的替代过程,只允许被赋值,更加安全 (4)never:那些永远不存在值的类型,安全 function test(x: string|number) (5)数组类型 (6)元组类型 4、TS的函数类型,定义函数类型时要定义输入参数类型和输出类型。 5、接口 特点是可选属性、只读属性、readonly、可以描述函数类型、可以描述自定义属性。 6、类 写法和js差不多,增加了一些定义增加了public、private、protected修饰符。跟java差不多! 抽象类只能被继承。。。都跟java一样
三、TS进阶 1、高级类型 (1)联合类型:同名类型取交集,同名非基础类型会进行一些相关元素的组合 (2)交叉类型,取并集 (3)类型断言:用as操作符来表示可以省去相关类型推断,让编译器确定类型,减少错误的出现 (4)类型别名type 与接口一样都可以定义对象和函数、允许继承 异:interface用TS来定义对象,type用来定义别名方便使用 还有type可以定义基本类型但是接口不行,接口可以合并重复声明,type不行 2、泛型 考虑可重用性。一个组件可以支持多种类型的数据。 泛型的语法是<>里面写 定义T为string:print('hello') 3、泛型的基本操作符 typeof获取类型 keyof获取所有键 (3)in type Keys='a'|'b'|'c' type Obj={ [p in Keys]:any }
(4)T[K]:索引 interface Person {} let type: Person['name'] (5)约束泛型 interface aaa{} function xxx(arg: T):T {} 4、常用类型工具
四、TS实战 (一)声明文件 1、declare:声明上下文中需要的环境类型 2、.d.ts:声明文件定义 3、@type:三方库TS类型包 4、tsconfig.json:定义TS的配置,如果出现无法解析的情况,可以去检查tsconfig.json里面file的include 的配置等等。 (二)泛型约束后端接口类型 1、axios对API接口的调用
总结:TS是一种强编译语言,能够快速定位编译错误。