Typescript 中根据某个字段判断其他字段是否必传
在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
就不是必需的。
评论已关闭