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
相关产品推荐
相关产品推荐

