typescript|青训营

100 阅读2分钟

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对象,因为会被人人为修改,所以不建议用它的属性来判断和编写代码。(判断也不行,因为若它里面的属性已被人为修改后,用它来判断是不符合事实的)