Wsh's blog Wsh's blog
首页
  • 基础知识
  • ArkUI
  • UIAbility
  • 组件通信方式
  • 前端缓存
  • React
  • typescript
  • javascript
  • flutter
  • node
  • webpack
web3D😉
宝库📰
  • 分类
  • 标签
  • 归档
龙哥的大🐂之路 (opens new window)
GitHub (opens new window)

wsh

热爱前端的程序媛
首页
  • 基础知识
  • ArkUI
  • UIAbility
  • 组件通信方式
  • 前端缓存
  • React
  • typescript
  • javascript
  • flutter
  • node
  • webpack
web3D😉
宝库📰
  • 分类
  • 标签
  • 归档
龙哥的大🐂之路 (opens new window)
GitHub (opens new window)
  • 基础类型
  • 类型断言、类型声明
  • 枚举、函数、类、装饰器
  • 联合类型&交叉类型、泛型、类型保护、类型推断
    • 模块、命名空间
    • tsc 指令,ts配置
    • typescript
    2022-04-14
    目录

    联合类型&交叉类型、泛型、类型保护、类型推断

    # 联合类型

    • 联合类型表示一个值的类型可能是多个类型中的一种,使用【|】来间隔每个类型
    • 一个联合类型只能访问所有类型都有的成员。
    interface A1 {
      v1: number;
      v2: number;
    }
    
    interface A2 {
      v1: string;
      v3: boolean;
    }
    
    function a1 (x: A1 | A2): void {
      x.m1;
      x.m3; // 报错, 只能确保包含A1 | A2的共有成员
    }
    

    # 交叉类型

    • 交叉类型将多个类型合并为一个类型。交叉类型会包含所有类型的成员, 使用【&】来间隔每个类型
    interface A1 {
      v1: number;
      v2: number;
    }
    
    interface A2 {
      v1: string;
      v3: boolean;
    }
    
    function a1 (x: A1 & A2): void {
      x拥有v1,v2,v3 A1,A1所有类型的成员
    }
    

    # 泛型

    • 定义包含可复用类型的类型。

    • 显示指定泛型变量的实际类型

    • 不指定泛型变量的实际类型

    常用变量:

    T:(type)表示类型

    K:(key)表示对象中键的类型

    V:(Value)表示对象中值的类型

    E:(Element)表示元素类型

    # 类型保护

    假设我们确实要访问非共有属性或者方法,可以使用类型断言

    // 使用类型断言
    (getAnimal() as Fish).swim();
    (getAnimal() as Bird).fly();
    

    这会导致我们不得不多次使用类型断言,更好的方式是使用类型保护,执行运行时类型检查来保证类型在一定范围内的表达式

    # 类型谓词

    谓词为 parameterName is Type 这种形式,parameterName 必须是来自于当前函数签名里的一个参数名

    # in运算符

    n in x表达式中,n是一个字符串字面量或字符串字面量类型,x是一个联合类型。

    # typeof 类型保护

    如果联合类型中的类型都是原始类型的话,可以直接使用typeof来判断。typeof v === "typename",typename必需是number、string、boolean、或者symbol。只有通过 ===, !== 比较时,才会被识别为类型保护

    # instanceof 类型保护

    instanceof的右边需要是一个构造函数,TypeScript会按以下顺序缩小范围:

    • 构造函数的prototype属性的类型(如果构造函数的prototype属性的类型不为any)。
    • 类型的构造标志返回的类型的并集。

    # 类型推断

    • 当变量的声明和初始值在同一行,可以省略变量类型的声明
    • 类型推断不出来,就需要类型注解协助
    #typescript
    枚举、函数、类、装饰器
    模块、命名空间

    ← 枚举、函数、类、装饰器 模块、命名空间→

    最近更新
    01
    组件通信方式
    01-07
    02
    UIAbility
    01-07
    03
    ATKTS
    01-06
    更多文章>
    Theme by Vdoing | Copyright © 2022-2025 Wsh | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式