Typescript 中根据某个字段判断其他字段是否必传
warning:
这篇文章距离上次修改已过441天,其中的内容可能已经有所变动。
在TypeScript中,你可以使用条件类型来基于一个字段决定另一个字段是否必传。下面是一个简单的例子,其中我们定义了一个RequiredIf类型,它会检查Condition字段是否为true,如果是,则DependentField就是必需的。
type RequiredIf<Condition extends boolean, DependentField> = Condition extends true ? DependentField : {};
interface MyForm {
hasAddress: boolean;
address: string;
}
// 如果 hasAddress 是 true,则 address 是必需的
type MyFormWithRequiredAddress = RequiredIf<true, { address: string }>;
// 实际使用时,你可以将 MyFormWithRequiredAddress 作为 MyForm 的子类型
const formData: MyForm & MyFormWithRequiredAddress = {
hasAddress: true,
address: "123 Main St", // 这里的 address 是必需的,因为 hasAddress 是 true
};在这个例子中,MyFormWithRequiredAddress 类型会根据第一个参数 true 是否扩展为 DependentField 类型来决定 address 字段是否是必需的。如果 hasAddress 是 false 或者其它条件不满足,address 就不是必需的。
评论已关闭