gpt4 book ai didi

javascript - 字符串枚举键索引对象的 typescript 定义?

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:21 29 4
gpt4 key购买 nike

我定义了以下枚举和数据模型:

const enum Models {
Location = 'Location',
Person = 'Person',
Vehicle = 'Vehicle'
}

export interface Location {
name?: string,
city?: string,
state: string,
zip?: string,
}

export interface Person {
firstname: string,
lastname?: string,
}

export interface Vehicle {
model: string,
year?: string,
}

我定义我的数据如下:

type ModelMap = {[key in Models]: Location | Person | Vehicle}

const data: ModelMap = {
[Models.Location]: { state: 'CA' },
[Models.Location]: { state: 'OR' },
[Models.Location]: { state: 'CO', firstname: 'blah' },
[Models.Person]: { firstname: 'John', lastname: 'Doe' },
[Models.Vehicle]: { model: 'Ford', year: '2018' },
}

这有效,但不强制每个对象的特定类型。相反,它强制执行三种类型的联合, Location |人 |车辆。

是否可以强制特定对象类型与枚举索引键匹配?如果可以,如何实现?

例如,我希望第 3 个位置对象无法通过类型检查,因为 Location 接口(interface)没有名字变量。似乎我缺少枚举模型和各个接口(interface)之间的映射,但我不确定。任何帮助表示赞赏。谢谢。

最佳答案

我最终在接口(interface)和枚举之间创建了一个映射,如下所示:

type EnumInterfaceMap = { Location: Location; Person: Person; Vehicle: Vehicle };
type ModelMap = {[key in Models]: EnumInterfaceMap[key]}

关于javascript - 字符串枚举键索引对象的 typescript 定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54064715/

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