/* * 枚举 enumeration(enum),枚举(Enum)类型用于取值被限定在一定范围内的场景。 * 使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 * TypeScript支持数字的和基于字符串的枚举。 * * *///数字枚举
enum NumDirection {
Up = 1,//不初始化,默认从0开始Down,Left,Right
}
//使用枚举很简单:通过枚举的属性来访问枚举成员,和枚举的名字来访问枚举类型
console.log(NumDirection);//通过枚举的名字来访问枚举类型
console.log(NumDirection.Up);//通过枚举的属性来访问枚举成员// 字符串枚举
//在字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。
enum EnumString{
Up = "UP",Down = "DOWN",Left = "LEFT",Right = "RIGHT",
}
console.log(EnumString);//通过枚举的名字来访问枚举类型
console.log(EnumString.Up)//通过枚举的属性来访问枚举成员//异构枚举(Heterogeneous enums)
//不建议创建混合数据类型的枚举 示例如下:
enum BooleanLikeHeterogeneousEnum {
No = 0,Yes = "YES",
}//枚举项有两种类型:常数项(constant member)和计算所得项(computed member)
//枚举--常量
//1.它是枚举的第一个成员且没有初始化器,这种情况下它被赋予值 0:
// E.X is constant:
enum E {
X }
//2.它不带有初始化器且它之前的枚举成员是一个 数字常量。
// 这种情况下,当前枚举成员的值为它上一个枚举成员的值加1。
// All enum members in 'E1' and 'E2' are constant.enum E1 {
X, Y, Z }enum E2 {
A = 1, B, C
}
/* * 3.枚举成员使用 常量枚举表达式初始化。 * 常数枚举表达式是TypeScript表达式的子集,它可以在编译阶段求值。 当一个表达式满足下面条件之一时,它就是一个常量枚举表达式:0. 一个枚举表达式字面量(主要是字符串字面量或数字字面量)1. 一个对之前定义的常量枚举成员的引用(可以是在不同的枚举类型中定义的)2.带括号的常量枚举表达式3.一元运算符 +, -, ~其中之一应用在了常量枚举表达式4.常量枚举表达式做为二元运算符 +, -, *, /, %, <<, >>, >>>, &, |, ^的操作对象。若常数枚举表达式求值后为 NaN或 Infinity,则会在编译阶段报错。 * * */
enum FileAccess {
// constant membersNone,Read = 1 << 1,//左移运算符Write = 1 << 2,ReadWrite = Read | Write,//位运算符// computed memberG = "123".length,//计算所得项
}console.log(FileAccess.G)//联合枚举类型与枚举成员的类型
enum ShapeKind {
Circle,Square,
}interface Circle {
kind: ShapeKind.Circle;radius: number;
}interface Square {
kind: ShapeKind.Square;sideLength: number;
}let c: Circle = {
kind: ShapeKind.Circle,// kind: ShapeKind.Square,//报错// ~~~~~~~~~~~~~~~~ Error!radius: 100,
};
console.log(c.kind);//运行时的枚举
enum E3 {
X, Y, Z
}
function f(obj: {
X: number }) {
return obj.X;
}
// Works, since 'E' has a property named 'X' which is a number.
console.log(f(E3));//反向映射
enum Enum {
A
}
let a = Enum.A;
let nameOfA = Enum[a]; // "A"
console.log(Enum.A);//0
console.log(nameOfA);//"A"/* * const 常量枚举 * 常量枚举通过在枚举上使用 const修饰符来定义 * 常量枚举与普通枚举的区别是,它会在编译阶段被删除,并且不能包含计算成员。 * */
const enum EnumConst {
A = 1,// B= 'abc'.length //常量枚举不允许包含计算成员。
}//外部枚举
// 此处必须使用const, 不然declare 定义的类型只会用于编译时的检查,编译结果中会被删除
declare const enum Directions {
Up,Down,Left,Right
}
let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];
console.log(directions)> 吴哲:平常心,平常心!--《士兵突击》
详细解决方案
TypeScript -- 第七节 枚举
热度:54 发布时间:2023-11-23 07:23:45.0
相关解决方案
- ionic UI(二)ionic2 framework - TypeScript - tutorial
- TypeScript:使用动态导入的工厂模式不允许构造该对象的新实例以进行合成
- Visual Studio 2015 RTM - 更新 TypeScript 工具后失去对 JavaScript 的支持
- 【万字长文】深入理解 Typescript 高级用法
- TypeScript 项目中引入SVG
- react + typescript 项目中使用函数控制路由跳转
- 基于element NavMenu 导航菜单布局样式,对vue-typescript-admin-template进行更改
- TypeScript 知识点汇总
- vue+typescript+element-ui项目类型报错的问题
- typeScript 中导入样式文件报错?静态文件.css,.scss,.less,.jpg,.png,.json
- Ant design Pro V5 +Typescript + Hooks + Umi + Dev + SpringBoot + mysql + redis + scrity 实现动态菜单权限管理
- umi-dev-react-typescript-hooks+antd pro解决请求无线循环问题
- umi+react+typescript+dev+request(umi)+hooks请求数据
- typescript interface 与 type 声明类型的区别
- Typescript 实践中问题总结
- 使用node+apollo-server + typescript 搭建 GraphQL API
- typeScript ---泛型
- typeScript --基础数据类型
- 系统学习 TypeScript(六)——认识接口
- 【Vue3 造轮子项目 ------ kaite-ui】基于vue3.0 + vite + TypeScript 实现一个UI框架 - kaiteUI
- React仿CNode社区(感受React + Typescript + Redux开发流程)
- TypeScript -- 第七节 枚举
- TypeScript -- 第六节 泛型
- TypeScript--第五节:类
- TypeScript--第四节:函数
- TypeScript --第三节:接口
- TypeScript -- 第二节:变量声明
- TypeScript -- 第一节:基础类型
- 带你玩转 TypeScript 【TS】
- TypeScript 的 ?: 、两个问号、?. 分别是什么意思?