我有一张地图:
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] 删除。
我来说两句