javascript - 接受任意数量的键值对象的接口
问题描述
我有以下接口/类型,如下所示:
export interface Bar {
title?: string;
[key: string]: string;
}
export type Foo = {
name: string;
} & {
[key: string]: Bar;
};
当我尝试像这样声明一个变量时:
const someObject: Foo = {
name: 'John',
city: {
a: 'something',
},
};
它给了我错误:
键入'{名称:字符串;城市:{一个:字符串;}; }' 不可分配给类型 'Foo'。键入'{名称:字符串;城市:{一个:字符串;}; }' 不可分配给类型 '{ [key: string]: Bar ; }'。属性“标题”与索引签名不兼容。类型 'string' 不能分配给类型 'Bar'。
问题:
如何创建一个接口来满足一个对象,例如:
const someObject: Foo = {
name: 'John',
randomProperty1: { a: 'a' },
randomProperty2: { b: 'b' },
// any number of 'Bar'
};