如何定义依赖属性值的TypeScript类型?valid为true时prop1/prop2必为string
TypeScript 依赖属性值的类型设计方案
要实现当valid为true时,prop1和prop2为必填string类型;当valid为false时,prop1和prop2可选的类型约束,可以通过联合类型拆分两种场景来定义:
type Resp = | { valid: true; prop1: string; prop2: string } | { valid: false; prop1?: string; prop2?: string };
类型约束效果说明
- 当
valid赋值为true时,TypeScript会强制要求必须提供prop1和prop2的字符串值,不允许省略或设为undefined。 - 当
valid赋值为false时,prop1和prop2可以自由选择提供字符串值、设为undefined,或者直接省略。
示例代码
合法用法
// valid为true,必填prop1和prop2 const validResp: Resp = { valid: true, prop1: "hello", prop2: "world" }; // valid为false,可省略prop1和prop2 const invalidResp1: Resp = { valid: false }; // valid为false,仅提供prop1 const invalidResp2: Resp = { valid: false, prop1: "test" }; // valid为false,仅提供prop2 const invalidResp3: Resp = { valid: false, prop2: "demo" };
非法用法(TypeScript会报错)
// valid为true,缺少prop2 const errorResp1: Resp = { valid: true, prop1: "hello" }; // valid为true,prop1设为undefined const errorResp2: Resp = { valid: true, prop1: undefined, prop2: "world" };
内容的提问来源于stack exchange,提问作者Arunachalam
相关产品推荐
相关产品推荐

