enum ColorsEnum { white = '#ffffff', black = '#000000', } 这里ColorEnum 在运行时作为一个对象存在,不是一个类型,所以,我们需要一起使用 keyof typeof这两个操作符,如下代码所示: type Colors = keyof typeof ColorsEnum let colorLiteral: Colors colorLiteral =
原因:keyof关键字只能用于对象类型,因为它需要获取对象的键。对于非对象类型(如基本类型、枚举等),它们没有键的概念。 解决方法:如果你需要对非对象类型进行操作,可以考虑使用其他方法,例如使用typeof来获取类型的字符串表示。 代码语言:txt 复制 enum Color { Red, Green, Blue } type ColorType = typeof Color...
typeDirectionNumberValue=typeofDirectionNumber[keyoftypeofDirectionNumber];// 指向 DirectionNumberfunctiontoDirectionNumber(direction:DirectionNumberValue){}toDirectionNumber(1)// oktoDirectionNumber(DirectionNumber.Up)// oktypeDirectionStringValue=typeofDirectionString[keyoftypeofDirectionString];// 指向 Direct...
利用 typeof、keyof 等类型推导相关语法举例说明:1. 对于 enum 定义的枚举类型,使用 keyof typeof 获...
向我解释 keyof typeof 在TypeScript 中的含义 例子: enum ColorsEnum { white = '#ffffff', black = '#000000', } type Colors = keyof typeof ColorsEnum; 最后一行相当于: type Colors = "white" | "black" 但它是如何工作的? 我希望 typeof ColorsEnum 返回类似 "Object" 然后keyof "Object"...
和type、interface 类似,enum 可以直接作为静态类型使用 functiongetLocals(lang:Language) {return`hello ${lang}`; } 但在调用这个函数的时候,传入的参数不能是enum的值,而应该是enum的引用 从这里就会发现 enum 的特性:可以当做对象使用 摘一段官方文档的描述:枚举类型在运行时会被编译为一个对象,包含正向映射...
Enum[Enum["B"] = 2] = "A"; })(Enum || (Enum = {})); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 这时可以考虑使用const enum来优化编译结果,它不会编译未使用的枚举项,而且不会生成对象,在编译后只会保留枚举值
四、keyof 与 typeof 操作符 typeof 操作符用于获取变量的类型。因此这个操作符的后面接的始终是一个变量,且需要运用到类型定义当中。为了方便大家理解,我们来举一个具体的示例: typePerson= {name:string;age:number; }letman:Person= {name:"Semlinker",age:30}typeHuman=typeofman; ...
自2018 年以来,Typescript 中有一种更简单的方法,无需使用 keyof typeof: let layer: { [key in MyEnum]: any} 不必包含所有键: let layer: { [key in MyEnum]?: any} 原文由 Hugo Elhaj-Lahsen 发布,翻译遵循 CC BY-SA 4.0 许可协议 有...
一、keyof 简介 TypeScript 允许我们遍历某种类型的属性,并通过 keyof 操作符提取其属性的名称。keyof操作符是在 TypeScript 2.1 版本引入的,该操作符可以用于获取某种类型的所有键,其返回类型是联合类型。 下面我们来看个例子: 代码语言:javascript 代码运行次数:0 ...