zoukankan      html  css  js  c++  java
  • ts类型-枚举

    枚举是组织收集有关联变量的一种方式,通过组织特殊类型的变量,使得代码更易读。

    数字类型

    enum Weekday {
      Monday,
      Tuesday,
      Wednesday,
      Thursday,
      Friday,
      Saturday,
      Sunday
    }
    
    Weekday.Monday // 0
    Weekday.Tuesday // 1
    

    数字类型的枚举默认从数值0开始,依次递增。当然也可以通过赋值的方式改变这个值

    enum Weekday {
        Monday=1,
        Tuesday,
        Wednesday,
        Thursday = 2,
        Friday,
        Saturday,
        Sunday
    }
    
    Weekday.Monday // 1
    Weekday.Tuesday // 2
    Weekday.Wednesday // 3
    Weekday.Thursday // 2
    
    

    说明:枚举值是只读的

    字符串类型

    enum Codes {
        SUCCESS = '10000',
        NO_PRO = '10002',
        ERROR = '20000',
        LOW_VERSION = '20001'
    }
    
    // code 是服务端返回的
    if(code === Codes.LOW_VERSION) {
        // 处理版本过低的逻辑
    }
    

    常量枚举

    可以使用const关键字定义常量枚举

    const enum Codes {
        SUCCESS = '10000',
        NO_PRO = '10002',
        ERROR = '20000',
        LOW_VERSION = '20001'
    }
    
    const success = Codes.SUCCESS // '10000'
    

    使用常量定义枚举的好处是编译后的代码更加简洁,性能也更好一些

    有静态方法的枚举

    枚举类型不仅可以定义数值和字符串,使用enum + namespace 的声明的方式可以向枚举类型添加静态方法

    enum Weekday {
        Monday,
        Tuesday,
        Wednesday,
        Thursday,
        Friday,
        Saturday,
        Sunday
      }
      
      namespace Weekday {
          // 验证是否是工作日
        export function isBusinessDay(day: Weekday) {
          switch (day) {
            case Weekday.Saturday:
            case Weekday.Sunday:
              return false;
            default:
              return true;
          }
        }
      }
      
      // 使用
      Weekday.isBusinessDay(Weekday.Monday); // true
      Weekday.isBusinessDay(Weekday.Sunday); // false
    
    常用网站: SegmentFault | GitHub | 掘金社区
  • 相关阅读:
    [非技术]简单预测中美关系未来的走向
    权限系统模型和常用权限框架
    [Tomcat]了解Tomcat,从它的结构开始
    [Mybatis]用AOP和mybatis来实现一下mysql读写分离
    [MQ]说一说MQ消息积压
    [MQ]再谈延时队列
    [Web] 浅谈Cookie,Session,Token
    k8s搭建
    微信公众平台开发(2)扫描二维码添加公众账号
    微信公众平台开发模式
  • 原文地址:https://www.cnblogs.com/yesyes/p/15412530.html
Copyright © 2011-2022 走看看