我有以下目标:
type Currencies = "tl" | "us-dollar" | "euro"
const currenciesMap = {}
我想说的是,这个对象的键必须是Currencies类型中定义的值之一。
因此,对象看起来如下所示:
const currenciesMap = {
tl: "₺",
"us-dollar": "$",
euro: "€"
}
所以typescript应该只允许定义这些键。
如何制作这种类型?
我以为这会奏效,但它没有:
const currenciesMap: { [key: Currencies[string]]: string } = {}
Typescript显示以下错误:
An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type.
3条答案
按热度按时间zujrkrfu1#
您可能正在寻找Typescript
Record
实用程序类型。这里有记录Record
等于请注意,当以这种方式将变量声明为记录时,您将被迫声明所有可能的属性。如果您不想拥有所有这些,可以将其 Package 为
Partial
blpfk2vs2#
您不需要使用
[string]
访问Currencies
。你应该说K in Currencies
,如下所示:hwamh0ep3#
用法
或者: