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

时间:2019-07-17 01:26:25

标签: typescript

给出以下内容:

type ActionType = 
    'action1' |
    'action2' |
    'action3';

interface Action {
    type: ActionType;
    value?: number | Date;
}

打字稿中是否有一种方法基于value的值来限制type的类型?

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

可能不可能,只能检查。

1 个答案:

答案 0 :(得分:2)

您最好的机会可能是使用有区别的工会:

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