深入浅出TypeScripScript|青训营笔记

33 阅读3分钟

第九节 深入浅出TypeScripScript

一、为什么学习TS

01. TS vs JS

TypeScriptJavaScript
JavaScript的超集,用于解决大型项目的代码复杂性一种脚本语言,用于创建动态网页
强类型,支持静态和动态类型动态弱类型语言
可以在变异期间发现并纠正错误只能在运行时发现错误
不允许改变变量的数据类型变量可以被复制成不同类型

TypeScript的范围比JavaScript要广,是JS的扩展。

02. TS带来了什么

  1. 类型安全
  2. 下一代JS特性
  3. 完善的工具链

二、TS基础

01. 基础类型

  • boolean、number、string
  • 枚举enum:成员和成员池之间可以进行映射和反映射;
  • any、unkown、void
  • never
  • 数组类型[]
  • 元组类型tuple

02. 函数类型

  • 定义:TS定义函数类型时要定义输入参数类型和输出类型;
  • 输入类型:参数支持可选参数和默认参数;
  • 输出参数:输出可以自动判断,没有返回值时,默认为void类型;
  • 函数重载:名称相同但参数不相同,可以通过重载支持多种类型;

03. interface

  • 定义:接口类型是为了定义对象类型;
  • 特点:
    • 可选属性:?
    • 只读属性:readonly
    • 可以描述函数类型
    • 可以买哦书自定义属性
  • 总结:接口非常灵活 duck typing

04. 类

  • 定义:写法和JS差不多,增加了一些定义;类的使用可以提升效率;
  • 特点:
    • 增加了public、private、protected修饰符;
    • 抽象类:
      • 只能被继承,不能被实例化;
      • 作为基类,抽象方法必须被子类实现;
    • interface约束类,使用implements关键字;

三、TS进阶

01. 高级类型

  • 联合类型 '|'
  • 交叉类型 '&'
  • 类型断言:提前进行属性定义
  • 类型别名(type VS interface):
    • 定义:给类型起个别名;
    • 相同点:
      • 都可以兴义对象或函数;
      • 都允许继承;
    • 差异点:
      • interface是TS用来定义对象,type是用来定义别名方便实用;
      • type可以定义基本类型,interface不行;
      • interface可以合并重复声明,type不行;

02. 范型

  1. 基本定义:
  • 范型的与反思<>里面写类型参数,一般用T表示;
  • 使用时有两种方法指定类型:
    • 定义要使用的类型;
    • 通过TS类型推断,自动推导类型;
  • 范型的作用:临时占位,之后通过传来的类型进行推导;
  1. 基础操作符号:
  • typeof:获取类型;
  • keyof:获取所有键;
  • in:便利枚举类型;
  • T[k]:索引访问;
  • extends:范型约束;
  1. 常用工具类型:
  • Partial<T>:将类型属性变为可选;
  • Required<T>:将类型属性变为必选;
  • Readonly<T>:将类型属性变为只读;
  • Pick、Record……

四、TS实战

  1. 声明文件
  • declare:三方库需要类型生声明文件;

  • d.ts:声明文件定义;

  • @types:三方库TS类型包;

  • tsconfig.json:定义TS的配置;

五、TypeScript补充

01. TS优势

  • 是对Javascript的扩展,解决了JS的主要问题:弱类型和没有命名空间,难以模块化;
  • TS可以在任何浏览器、任何计算机、任何操作系统上使用,且是开源的;
  • TS引入了JS没有的类的概念;
  • TS引入了模块的概念,可以将声明、数据、函数和类封装在类中;
  • TS使重构变的快捷和容易;

02. 泛型

  • 泛型是静态类型语言的基本特征,允许开发人员将类型作为参数传递给另一种类型、函数或其他结构;
  • 使用泛型可以提升代码的灵活性,使组件可重用并消除重复;
  • TypeScript 完全支持泛型,以此将类型安全性引入到接受参数和返回值的组件中。