【发布时间】:2016-11-01 04:14:44
【问题描述】:
如果我有一个覆盖并指定单个子级的接口,例如:
interface Props extends React.HTMLProps<HTMLDivElement> {
children?: React.ReactElement<any>;
}
class MyComponent extends React.Component<Props, {}> {
// ...
}
IntelliSense 正确显示了单元素子道具类型,但我可以将具有这些道具的组件与多个子组件一起使用而不会出现任何错误:
<MyComponent>
<div>hello</div>
<div>world</div>
</MyComponent>
这可以使用 TypeScript 1.8.30.0 编译,但在运行时会中断:
Invariant Violation: ReactDOM.render(): Invalid component element.
它只适用于一个<div/> 子元素,因为组件代码是为该场景编写的。这对我来说似乎是一个错误——我希望它能够意识到两个<div/> 元素与children 的定义不匹配。不过,我想我会先在这里问一下,然后再打开一个问题,以防我遗漏了什么。
是否可以通过this.props.children 只要求一个孩子,还是必须添加特定的道具?
【问题讨论】:
标签: reactjs typescript typescript1.8 tsx