TS2536:类型不能用于索引类型 ENUM - TS MAPPED TYPES

雷米斧头

要在我的主题中使用我的颜色枚举,我必须声明它的类型。
我试过这个:

enum COLORS {
  PRIMARY = '#FF7900',
}

type ColorsType = {
  [key in keyof typeof COLORS]: COLORS[key] // error
}

interface ThemeColors extends ColorsType {}

但我收到此错误: TS2536: Type 'key' cannot be used to index type 'COLORS'

如果我使用string而不是,它可以工作COLORS[key],但我不希望该类型允许任何COLORS属性的任何字符串

我们如何强制键与枚举的映射类型相等?

TD石心

值类型实际上应该是(typeof COLORS)[key].

enum COLORS {
  PRIMARY = '#FF7900',
  SECONDARY = '#FFFFFF',
}

type ColorsType = {
  [key in keyof typeof COLORS]?: typeof COLORS[key];
  // if not optional, all COLORS enum keys are required!
}

// These might be what you want
var colors: ColorsType = { PRIMARY: COLORS.PRIMARY }; // OK
var wrongColors: ColorsType = { PRIMARY: COLORS.SECONDARY }; // error!

编辑:解决方案可以进一步简化为:

type ColorsType = Partial<typeof COLORS>;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通用类型索引。TS2536:类型“字符串”不能用于索引类型“T”

TS2536:类型“ keyof T2”不能用于索引类型“ T1”

类型'string'不能用于索引类型'T'.ts(2536)

TS2536:即使类型必须是键,也不能用作索引?

Typescript:类型'undefined'不能用作索引类型.ts(2538)

错误 TS2538:类型“CCCustomer”不能用作索引类型

响应 yup 错误类型“未定义”不能用作索引类型。TS2538

TS7053:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引“User_Economy”类型

TS7053。隐式具有 'any' 类型,因为类型 'string' 的表达式不能用于索引类型 'ZoneI'

TS7053:元素隐式具有“任何”类型,因为“页面”类型的表达式不能用于索引类型“对象”

元素隐式具有“任何”类型,因为“数字”类型的表达式不能用于索引类型“{}”。.ts(7053) VUEJS

错误 TS7053:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引“模块类型”

node_modules/@types/googlemaps/index.d.ts中的错误-元组类型元素列表不能为空

TS2688:找不到安装了@ types / node的“ node”的类型定义文件

ts enum not working '"MALE"' 类型的参数不可分配给 'Gender | 类型的参数 (() => 性别 | null) | 空值

如何修复“ @ types / node / index.d.ts不是模块”?

@ types / jest index.d.ts文件返回错误

js'types'只能在.ts文件中使用-使用@ ts-check的Visual Studio Code

@ types / lodash / common / array.d.ts(483,22):错误TS1005:';'

node_modules/@types/jasmine/index.d.ts:错误TS1005:预期为'='

\node_modules\@types\angular\index.d.ts(243,41): 错误 TS100

如何在 morphic-ts 召唤器中注入 io-ts-types?

ts(2322)类型'unknown'不能分配给'never'类型。

定义自定义types.d.ts不能解决导入js库的问题

对象的类型为“未知”.ts

努力在TS中建立类型

React TS函数参数类型

TS概念类型名称约束

来自对象的自动 TS 类型