You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义依赖属性值的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:10:18