【发布时间】:2019-04-21 19:06:30
【问题描述】:
如果IExpression 接口类型的对象的expressions.null.property 或expressions.video.property 值不是PROPERTIES 值之一,我希望TypeScript 引发错误。
我有这个对象:
const PROPERTIES = {
ANCHOR_POINT: 'anchorPoint',
POSITION: 'position',
X_POSITION: 'xPosition',
Y_POSITION: 'yPosition',
Z_POSITION: 'zPosition',
SCALE: 'scale',
ORIENTATION: 'orientation',
ROTATION: 'rotation',
X_ROTATION: 'xRotation',
Y_ROTATION: 'yRotation',
Z_ROTATION: 'zRotation',
OPACITY: 'opacity',
};
我想将 IExpression.expressions.null.property 限制为 PROPERTIES 值之一。
这就是我试图让它发挥作用的方法:
type NULL_OR_VIDEO = "null" | "video";
interface IExpression {
name: string;
targets: FILE[];
expressions: {
[value in NULL_OR_VIDEO]: {
property: PROPERTIES;
expressionText: string;
}
}
}
虽然它会抛出错误。我知道我可以这样做:
interface IExpression {
name: string;
targets: FILE[];
expressions: {
[value in NULL_OR_VIDEO]: {
property: 'rotation' | 'xRotation'| 'opacity' ...
expressionText: string;
}
}
}
但我不想。
【问题讨论】:
标签: typescript types interface