0
我使用JS /打字稿,并具有下列情形的接口类型:确保嵌套成员
enum ResultFlag {
BELOW_MEASUREMENT_RANGE = 1, ABOVE_MEASUREMENT_RANGE,
BELOW_PATHOLOGICAL_RANGE, ABOVE_PATHOLOGICAL_RANGE
}
const FlagDefs = {
[ResultFlag.BELOW_MEASUREMENT_RANGE]: {
icon: 'down', color: palette.grey200
},
[ResultFlag.ABOVE_MEASUREMENT_RANGE]: {
icon: 'up', color: palette.grey200
},
[ResultFlag.BELOW_PATHOLOGICAL_RANGE]: {
letter: '<', color: palette.accent
},
[ResultFlag.ABOVE_PATHOLOGICAL_RANGE]: {
letter: '>', color: palette.accent
}
}
我想确保以下接口FlagDefs成员:
interface IFlagDef {
icon?: string;
letter?: string;
color: string;
}
以下不会编译:
const FlagDefs = {
[ResultFlag.BELOW_MEASUREMENT_RANGE]: IFlagDef ({
icon: 'down', color: palette.accent
})
//...
}
以下不编译,但实际上是完全没有意义的,因为ŧ他投只是强制执行不检查任何接口:
const FlagDefs = {
[ResultFlag.BELOW_MEASUREMENT_RANGE]: {
icon: 'down', color: palette.accent
} as IFlagDef
//...
}
我终于想出了一个有效的解决方案:
const FlagDefs = {
[ResultFlag.BELOW_MEASUREMENT_RANGE]: ((): IFlagDef => { return {
icon: 'down', color: palette.accent
}; })()
// ...
}
我不知道是否有人知道,确保所有成员的更简单,更直接的方式FlagDefs正确地实现了接口IFlagDef?
太棒了!如果删除不再需要的()=> {}闭包攻击,我会将其标记为答案! –
谢谢,我不小心复制并粘贴了错误的代码示例:) – zlumer