gpt4 book ai didi

typescript - 如何从对象中提取类型

转载 作者:行者123 更新时间:2023-12-04 00:00:40 24 4
gpt4 key购买 nike

我有一张 map :

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"

Playground

关于typescript - 如何从对象中提取类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62418222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com