这里展示一个简化的类图: EnumHelper+getKeys(enumObj: T) : string[]Colors 代码扩展片段如下: classEnumHelper{staticgetKeys<T>(enumObj:T):string[]{returnObject.keys(enumObj).filter(key=>isNaN(Number(key)));}}constcolorKeys=EnumHelper.getKeys(Colors);console.log(colorKeys); 1. 2. 3. 4....
或者在 Wireshark 中,我们可以使用以下命令进行过滤: http.request.method=="GET" 1. 报文结构 在获取枚举键的过程中,我们会用到位运算,因为 TypeScript 中的枚举实际是一个映射,底层实现往往涉及到位运算。假设我们有一个简单的枚举: enumColor{Red,Green,Blue,} 1. 2. 3. 4. 5. 为了计算位偏移,我们可...
在TypeScript 中,枚举(enum)是一种特殊的数据类型,它允许我们定义一组命名的常量。对于数字枚举,TypeScript 编译器会自动为每个枚举成员生成一个反向映射,这意味着我们可以通过枚举值获取枚举键(key),反之亦然。但是,对于字符串枚举,这种反向映射并不适用。 以下是基于数字枚举如何从枚举值获取枚举键的方法: 定义枚举...
// 假设我一个枚举enumENUM_TYPE{ALL='all',SOME='some',LITTLE='little'}// 获取枚举的 valuetypeIValue=`${ENUM_TYPE}`// 'all' | 'some' | 'little'// 获取枚举的 keytypeIKey=keyoftypeofENUM_TYPE// 'ALL' | 'SOME' | 'LITTLE'
enum LogLevel { ERROR, WARN, INFO, DEBUG,} /** * 这相当于: * type LogLevelStrings = 'ERROR' | 'WARN' | 'INFO' | 'DEBUG'; */type LogLevelStrings = keyof typeof LogLevel;function printImportant(key: LogLevelStrings, message: string) { const num = LogLevel[key]; ...
我们可以通过 Enum[key] 或者 Enum.key 的方式获取到对应的值。typescript 还支持反向映射,即可以通过值来获取键,不过反向映射只支持数字枚举。下面是个例子: enumStatus { Success=200, NotFound=404, Error=500} console.log(Status.Success)//200console.log(Status[200])//Successconsole.log(Status[Status....
使用enum关键字定义枚举 约定枚举名称、枚举中的值以大写字母开头 枚举中的多个值通过,(逗号)分隔。 定义好枚举后,直接使用枚举名称作为类型注解。 enumDirection{Up,Down,Left,Right}functionchangeDirection(direction:Direction){console.log(direction)}changeDirection(Direction.Up) ...
例如,我们创建一个函数 getEnumValue: 代码语言:txt 复制 function getEnumValue(str: string): Color | undefined { const keys = Object.keys(Color).filter(key => isNaN(Number(key))); const values = keys.map(key => Color[key as keyof typeof Color]); const index = values.indexOf(str...
TypeScript的类型系统,最基本的是简单对应 JavaScript 的基本类型,比如 string、number、boolean 等,然后是新增的 tuple、enum、复合类型、交叉类型、索引类型等增强类型。 这里会有一个问题,就是函数声明支持不同类型的重复编写问题,比如我的一个函数要接收一个数组,然后从中取中一个元素。
enum UserResponse { No = 0, Yes = 1, } function respond(recipient: string, message: UserResponse): void { // ... } respond("Princess Caroline", UserResponse.Yes); 数字枚举可以在计算成员和常量成员中混合使用。 简短的故事是,没有初始化器的枚举要么需要放在第一位,要么必须在使用数字常量或其...