• TS之类型别名、字面量、交叉类型


    1.类型别名

    类型别名是用来给一个类型起一个新名字。

    示例:

    type Name = string
    type NameResolver = () => string
    type NameOrResolver = Name | NameResolver
    
    function getName(n: NameOrResolver): Name {
      if (typeof n === 'string') {
        return n
      } else {
        return n()
      }
    }

     上面代码中,type变量声明的类型别名,在后面可以直接使用。

    2.字面量

    只能是一个原始数据类型

    const str: 'name' = 'name'
    const number: 1 = 1

     与类型别名结合的作用是一堆常量的可选值:

    type Directions = 'Up' | 'Down' | 'Left' | 'Right'
    let toWhere: Directions = 'Right'

     且只能在类型中定义的一个值中选择:

    3.交叉类型

    与 | 符号相反,用的是 & 符号,

    interface IName {
      name: string
    }
    
    type IPerson = IName & { age: number }
    
    let p: IPerson = {
      name: '张三',
      age: 14,
    }

    上面代码中,使用了& 符号。将IName接口与{ age: number }结合起来了,这样就约束了IPerson类型的对象必须同时实现name和age属性

  • 相关阅读:
    洛谷 P1282 多米诺骨牌
    【2017杭二联考】穿越矩形
    【2017杭二联考】 图的有向环
    树状数组
    Test2014-3-1 魅力值比较
    NOI2007 货币兑换
    POI2001 金矿
    太空飞行计划问题
    Genotype&&陨石的秘密
    usaco 土地并购 && hdu 玩具装箱
  • 原文地址:https://www.cnblogs.com/codexlx/p/14448566.html
Copyright © 2020-2023  润新知