【发布时间】:2020-07-24 06:02:14
【问题描述】:
我有一个 const 对象,如下所示:
export const Language: Values = {
es: {urlValue: 'es', label: 'Spain'},
en: {urlValue: 'en', label: 'Anything'},
eb: {urlValue: 'eb', label: 'Other thing'},
};
export interface Values {
[name: string]: Value;
}
export interface Value {
urlValue;
label;
selected?;
}
现在在应用程序的某个地方,我们读取了一些具有这种格式的数据,巧合的是,它们具有完全相同的键:
{
es: 32,
en: 11,
eb: 56
}
所以实际上我需要另一个像这样的对象类型:
export class AnotherObject {
constructor(public es: number,
public en: number,
public eb: number) {
}
}
但是我是否也可以动态创建这种类型,以便它自动使用 Language 对象的键或“Value”类型的 urlValue?
PS:这个问题是我们确切用例的简化形式,其中我们有多个常量,例如 Languages。所以自动化会很有帮助。
编辑:对于@basarat 的建议 - 由于此对象是父对象的一部分,我实际上需要在此部分中定义类型:
export class ParentObject {
thatObjectAbove: AnotherObject;
otherObjects: ..
..
}
export interface AnotherObject {
[name: LanguageOptions]: number;
}
我遇到错误“索引签名参数类型不能是联合类型。请考虑改用映射对象类型。”在“[名称:LanguageOptions]:数字;”行的“名称”部分
【问题讨论】:
标签: typescript