给定以下内容:
type ActionType =
'action1' |
'action2' |
'action3';
interface Action {
type: ActionType;
value?: number | Date;
}
打字稿中有没有办法根据type
的值限制value
的类型?
例如,如果type
等于 action1
或 action2
,我希望value
字段的类型为 number
,但如果type
是action3
,那么我希望值的类型为 Date
。
这可能是不可能的,而只是检查..
你最好的机会可能是使用受歧视的联合:
type Action = {
type: 'action1' | 'action2';
value: number;
} | {
type: 'action3';
value: Date;
}