首页 > 解决方案 > 根据另一个字段值限制字段类型

问题描述

鉴于以下情况:

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

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

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

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

这可能不可能,但只是检查..

标签: typescript

解决方案


您最好的机会可能是使用受歧视的工会:

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

推荐阅读