TypeScript
ts在社区的活跃度越来越高
ts是js的超集。ts可以在编译时发现并纠正错误,而js只能在运行时发现错误
ts带来了什么?
- 类型安全
- 支持了一些编译器
ts的基础类型
- boolean,number,string
- 枚举enum
- any,unknown,void
- never
- 数组类型[ ]
- 元组类型 tuple
- 函数类型(ts定义函数类型时要定义输入参数类型和输出参数类型)
- 接口(接口是为了定义对象类型)
- 类(写法和js差不多,增加了一些修饰符、有抽象类、interface约束类用implements)
ts高级类型
-
联合类型|
-
交叉类型&
-
类型断言
-
类型别名
-
泛型(考虑到可重用性),不仅考虑到当前能用的数据类型,也要考虑到未来可能会用到的数据类型。解决输出、输入可关联的问题。泛型的作用是临时占位,之后通过传来的类型进行推导。泛型的类型参数一般用T表示。在定义函数的时候使用泛型,在使用函数传参的时候使用的是自己需要的数据类型。使用时可以显示说明自己用的参数类型,也可以不说明,ts会有类型推断功能,根据传的参自动推导类型为xxx。extends泛型约束
泛型中常用的操作符:
typeof获取类型,keyof获取所有键,in遍历枚举类型,T[K]索引访问,extends泛型约束
常用的泛型工具:
Partial:将类型属性变为可选
Required:将类型属性变为必选
Readonly:将类型属性变为只读
Pick、Record
ts声明文件
- declare:三方库需要类型声明文件
- .d.ts:声明文件定义
- @types:三方库TS类型包
- tsconfig.json:定义TS的配置
操作表单(验证)
form节点也是一棵小dom文档树
表单的目的:提交信息给服务器
得到输入框的输入值:
eg:input_text.value
得到后可对其赋值,对输入框的内容进行动态修改:
input_text.value='123'
navigator对象
封装了浏览器的信息
大多数时候并不会用到navigator对象,因为会被人人为修改,所以不建议用它的属性来判断和编写代码。(判断也不行,因为若它里面的属性已被人为修改后,用它来判断是不符合事实的)