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

TypeScript中使用相同类型定义传递Props仍出现不可赋值错误的解决方案咨询

TypeScript中使用相同类型定义传递Props仍出现不可赋值错误的解决方案咨询

我在开发时遇到了一个TypeScript类型报错问题:明明父组件和子组件用了完全相同的联合类型来定义Props,但在父组件中把value传递给子组件时,却触发了不可赋值的类型错误。

具体的代码示例如下:

type ChildProps = { value: number } | { value: Array<number> };

const Child = ({ value }: ChildProps) => {
  return <div>{`${value}`}</div>;
};

const Parent = ({ value }: ChildProps) => {
  return <Child value={value} />; // TypeScript在这里报错:`Type 'number' is not assignable to type 'number[]'.(2322)`
};

const App = () => {
  return (
    <div>
      <Parent value={10} />
    </div>
  );
};

我收到的完整错误提示信息是:

Type '{ value: number | number[]; }' is not assignable to type 'IntrinsicAttributes & ChildProps'.
  Type '{ value: number | number[]; }' is not assignable to type '{ value: number[]; }'.
    Types of property 'value' are incompatible.
      Type 'number | number[]' is not assignable to type 'number[]'.
        Type 'number' is not assignable to type 'number[]'.(2322)

需要说明的是,<Child/>组件和对应的ChildProps类型并非由我维护,我没办法修改它们的定义。请问有没有办法正确给<Parent/>组件做类型标注,来解决这个TypeScript错误呢?

备注:内容来源于stack exchange,提问作者H.T. Koo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 20:13:05