根据另一个字段值限制字段类型



给定以下内容:

type ActionType = 
    'action1' |
    'action2' |
    'action3';
interface Action {
    type: ActionType;
    value?: number | Date;
}

打字稿中有没有办法根据type的值限制value的类型?

例如,如果type等于 action1action2 ,我希望value字段的类型为 number,但如果typeaction3,那么我希望值的类型为 Date

这可能是不可能的,而只是检查..

你最好的机会可能是使用受歧视的联合:

type Action = {
    type: 'action1' | 'action2';
    value: number;
} | {
    type: 'action3';
    value: Date;
}

最新更新