如何从对象中提取类型

Mohsinulhaq

我有一张地图:

const Map = {
  key1: 'value1',
  key2: 'value2'
}

我想value1 | value2使用上面的对象创建一个类型是否可以不重复这些值?

我尝试过type MyType = Map.key1 | Map.key2,但是会引发以下错误:Cannot find namespace 'Map'

亚历克斯·韦恩

首先,您必须声明MyMap变量as const

const MyMap = {
  key1: 'value1',
  key2: 'value2'
} as const

这告诉Typescript对象中的字符串文字应该是特定的常量,而不是仅推断为string

现在,您可以使用typeof关键字获取该对象的类型,然后通过自己的键对该类型进行索引以获取所有可能的值:

type MyMapValues = typeof MyMap[keyof typeof MyMap] // "value1" | "value2"

const a: MyMapValues = "value1"
const b: MyMapValues = "value2"

// Error: Other values not allowed:
const c: MyMapValues = "value3"

操场

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章