是否可以定义一个接口,使其可以包含任意数量的键,但必须包含id
键?
interface HasId{
id: number
}
可以定义这样的内容,但是如果数据结构中还有另一个键,它将输出一个错误。
答案 0 :(得分:3)
是的,实际上您需要创建一个字典类型。有关Advanced Types的更多信息。
interface HasId {
id: number;
[key: string]: number;
}
您还可以使其更通用,例如
interface IDictionary<T> {
[key: string]: T;
}
interface HasId extends IDictionary<number> {
id: number;
}
答案 1 :(得分:2)
是的,您可以将交集类型与原始类型和标准对象一起使用,例如:
interface HasId {
id: number;
}
type AtLeastHasId = HasId & {[key: string]: number};
const test1: AtLeastHasId = { // Property "id" is missing
};
const test2: AtLeastHasId = { // Fine
id: 123
};
const test3: AtLeastHasId = { // Fine
id: 123,
other: 456
};