首页 > 解决方案 > 基于值的 Typescript 所需类型

问题描述

我是打字稿的新手,我想知道是否有一种方法可以根据另一种类型的值来制作所需的类型:

type TextInput = {
    isValid?: boolean;
    validMessage?: string;
}

validMessage如果isValid成为真的,是否可以要求?

标签: javascripttypescript

解决方案


您需要使用有区别的工会:

type Valid = {
    isValid: true;
    validMessage: string
}

type Invalid = {
    isValid: false;
}

type TextInput = Valid | Invalid


const foo = (props: TextInput) => {
    if (props.isValid) {
        props.validMessage // ok
    } else {
        props.isValid // false
        props.validMessage // error
    }
}

操场

另请参阅相关文档


推荐阅读