首页 > 编程语言 >C# and TypeScript – Enum Flags

C# and TypeScript – Enum Flags

时间:2023-06-25 14:24:20浏览次数:64  
标签:Status TypeScript Status0 C# Enum Flags

前言

以前就有提过 Enum Flags, 但平日不常用. 最近翻 Angular 源码, 发现它很多地方用到, 而且没有封装语义代码. 一堆符号真的看不惯啊...

于是又去复习了一遍, 熟悉熟悉. 顺便写一篇做记入呗.

这篇 C# 和 TypeScript 会一起讲.

 

参考 

深入理解 TypeScript – 枚举

Enum, Flags and bitwise operators

Stack Overflow – What does the [Flags] Enum Attribute mean in C#?

 

介绍

Enum 大家都很熟悉了. 它就是 number (也有些场景会用 string 啦, 这篇我们 focus number 就好)

enum Status {
    Status0,
    Status1,
    Status2
}

console.log(Status.Status0); // 0
console.log(Status.Status1); // 1
console.log(Status.Status2); // 2

那...如果我们要 Enum List 呢? 

我们当然可以用 Array

const statusList: Status[] = [Status.Status0, Status.Status1];
if(statusList.includes(Status.Status0)) {
    // included
}
if(statusList.some(e => e === Status.Status0)) {
    // included
}

但是有一种性能超级快的方式. 可以取代 Enum Array, 那就是利用二进制操作.

而这就是 Enum Flags 的核心.

 

标签:Status,TypeScript,Status0,C#,Enum,Flags
From: https://www.cnblogs.com/keatkeat/p/17502804.html

相关文章

  • MSDTC(Microsoft Distributed Transaction Coordinator)是微软的分布式事务协调器,它是Wi
    MSDTC(MicrosoftDistributedTransactionCoordinator)是微软的分布式事务协调器,它是Windows操作系统中的一个组件。MSDTC提供了跨多个资源管理器(如数据库、消息队列等)执行事务的能力,确保事务的原子性、一致性、隔离性和持久性。MSDTC的主要功能如下:事务管理:MSDTC允许在跨多个......
  • [WP] 攻防世界 CSFJ1099 删库跑路-
    「附件」题目描述:某星星在离职前给公司服务器来了一记rm-rf/*,真实演绎了什么叫"删库跑路",老板把恢复数据的希望寄托在刚刚入职的你身上。你能帮助公司恢复出硬盘里的重要数据吗Hint1:通常来说删除文件只是把磁盘上对应的空间标记为未使用状态,数据本身还是存在于原本的位置Hi......
  • springboot里的@ConfigurationProperties注解介绍
    在SpringBoot中,@ConfigurationProperties注解用于将外部配置文件中的属性值绑定到Java类的字段或属性上。通过使用该注解,可以方便地将一组配置属性统一绑定到一个POJO类中,然后在应用程序中使用。以下是@ConfigurationProperties注解的主要特点和使用方式:绑......
  • kibana启动失败Kibana server is not ready yet,后台日志报错:NoShardAvailableActionEx
    kibana.log日志报错信息:,{"level":"error","message":"Actionfailedwith'no_shard_available_action_exception'.Retryingattempt8outof10in64seconds."},{"level":"error","message&qu......
  • Wallys/wifi 6 router ipq8072 enterprise wireless dual band /support wifi6e card.
    DR8072V01isanetworkingrouterpcbabasedonQualcommIPQ8072Acommunicationprocessor,withtwo10GbEinterfaces,onethroughanSFPcageandtheotherthroughanRJ45connector,plusfourGigabitEthernetports,and4×4MIMOWiFi6connectivity.Bas......
  • docker 私有仓库 harbor docker-compose
    c创建docker私有仓库dockerpullregistry:2.1.1mkdir/opt/registry#mkdir/var/lib/registry dockerrun-d-p5000:5000-v/opt/registry:/var/lib/registry--restart=always--nameregistryregistry:2.1.1 curlhttp://node2:5000/v2/_catalog curl-XGEThttp://192.1......
  • springboot里的@PropertySource注解介绍
    在SpringBoot中,@PropertySource注解用于加载外部的属性源文件,将其作为配置文件来使用。该注解可以用于标记在Java类上,并指定要加载的属性源文件的位置。使用@PropertySource注解可以很方便地将外部的属性文件加载到Spring的环境中,并可以通过@Value注解或Environ......
  • CSS实现图片自适应布局,且不拉伸变型
    1.通过背景图的方式处理图片( 通过background-size作用在容器上).img_background{width:300px;height:300px;background-image:url('image.jpg');background-repeat:no-repeat;//是否平铺background-position:centercenter;//设置背景图像的起......
  • 一个简单的C#程序解析
    一个简单的C#程序解析usingSystem;namespaceHelloWorldApplication{classHelloWorld{staticvoidMain(string[]args){/*我的第一个C#程序*/Console.WriteLine("HelloWorld");Console.ReadKey();}}}......
  • Access denied for user 'root'@'121.28.69.73' (using password: YES)问题的解决
    问题描述发现是连接不上远程数据库,那就只能先转成本地运行了问题解决转成本地的相关步骤:好吧,耽误了大概一个小时的时间,就是远程连接失败,需要换成本地的;就是将数据库改成本地连接就行啦!......