我有一张地图:
const Map = {
key1: 'value1',
key2: 'value2'
}
Run Code Online (Sandbox Code Playgroud)
我想value1 | value2使用上面的对象创建一个类型。是否可以不重复值?
我尝试过type MyType = Map.key1 | Map.key2,但它抛出以下错误:
Cannot find namespace 'Map'
Ale*_*yne 14
首先你必须声明MyMap变量as const。
const MyMap = {
key1: 'value1',
key2: 'value2'
} as const
Run Code Online (Sandbox Code Playgroud)
这告诉打字稿对象中的字符串文字应该是特定的常量,而不是仅仅推断为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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5572 次 |
| 最近记录: |