我想为这个对象编写合适的接口。步骤的键应该是动态的,并且值是布尔值。这就是目标:
const obj = {
A: {
step: {
a: true,
b: true,
c: true,
},
},
B: {
step: {
a: true,
d: true,
},
},
C: {
step: {
e: true,
f: true,
g: true,
},
},
}
到目前为止,我已经尝试过了,但还是出现了错误。
interface OBJ_INTERFACE {
side: {
step: {
[key: string]: boolean,
}
}
}
您可以提取Step
类型并在接口中重用:
type Side = {
step: {
[key: string]: boolean,
}
};
interface OBJ_INTERFACE {
A: Side;
B: Side;
C: Side;
}
游乐场
或者定义映射类型:
type OBJ_INTERFACE = {
[P in 'A' | 'B' | 'C']: {
step: {
[key: string]: boolean,
}
}
}
游乐场
您没有详细说明错误,所以我只能假设它源于尝试这样使用接口:
const obj: OBJ_INTERFACE = {
A: {
step: {
...
}
}
}
在这种情况下,您的接口不会将side
属性动态命名为'A' | 'B' | 'C'
。
尝试使side
也具有动态性:
interface OBJ_INTERFACE {
[key: string]: {
step: {
[key: string]: boolean
}
}
}