TS类型收窄教程示例详解

2022-09-21 17:09:36
目录
JS方法????????类型谓词is????????????????可辨别联合

类型收窄之前只能使用公共方法

JS方法

typeof

缺点

    typeof>typeof 数组 —→ objecttypeof 日期 —→ object

    a instanceof A : A 是否出现在a的原型链上

    缺点

    不支持stringnumberboolean 等原始类型

    不支持TS的 自定义类型,如下:

    type Person {
      name: string
    }
    
      key in objArray.isArray()

      ????????类型谓词is

      重点在>shape is Rect

      type Rect = {
        width: number
        height: number
      }
      type Circle = {
        center: [number, number]
        radius: number
      }
      const area = (shape: Rect | Circle): number => {
        if(isRect(shape)) {
          return shape.width * shape.height
        } else {
          return Math.PI * shape.radius ^ 2
        }
      }
      const isRect = (shape: Rect | Circle): shape is Rect => {
        return 'width' in shape && 'height' in shape
      }
      

      ????????????????可辨别联合

      要求:T>

        A | B | C … 要有一个相同的属性 type或其它type类型只能为 简单类型A | B | C …的type属性无交集
        type Rect = {
          type: 'rect',
          width: number
          height: number
        }
        type Circle = {
          type: 'circle'
          center: [number, number]
          radius: number
        }
        const area = (shape: Rect | Circle): number => {
          if(shape.type === 'rect') {
            return shape.width * shape.height
          } else {
            return Math.PI * shape.radius ^ 2
          }
        }

        以上就是TS 类型收窄教程示例详解的详细内容,更多关于TS 类型收窄的资料请关注易采站长站其它相关文章!