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

如何合并React组件Props类型定义?根据isEdit值关联obj类型

React组件Props类型的条件合并方案

当然可以合并,通过联合类型结合字面量类型就能实现让obj的类型依赖于isEdit的取值,具体实现如下:

1. 先定义基础类型(假设你已有ICustom类型)

type ICustom = {
  // 这里是你的自定义类型属性,示例如下
  id: number;
  name: string;
};

2. 合并后的DialogProps类型

type DialogProps = 
  | { isEdit: true; obj: ICustom }
  | { isEdit: false; obj: null };

3. 组件使用示例

const Dialog = (props: DialogProps) => {
  return (
    <div>
      {props.isEdit ? (
        <p>编辑模式:{props.obj.name}</p>
      ) : (
        <p>非编辑模式</p>
      )}
    </div>
  );
};

// 合法调用
<Dialog isEdit={true} obj={{ id: 1, name: "测试内容" }} />
<Dialog isEdit={false} obj={null} />

// 非法调用(TypeScript会直接报错)
<Dialog isEdit={true} obj={null} />
<Dialog isEdit={false} obj={{ id: 2, name: "错误示例" }} />

这种写法的核心是把isEdit的类型从宽泛的boolean限定为具体的字面量true/false,让TypeScript能根据isEdit的取值自动推断obj的类型,实现两个Prop之间的类型依赖关联。

内容的提问来源于stack exchange,提问作者Victor Mog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:15:28