【发布时间】:2020-10-22 00:05:40
【问题描述】:
假设我们有一个渲染props.children 的组件Foo 和另一个组件Bar。两个模块都导出一个 props 接口。
有没有办法强制Foo 的孩子只能属于Bar 类型?
理想情况下,我们可以在构建时使用 TypeScript 完成此任务。
例子:
import { createElement, FC, ReactNode } from 'react';
import { Bar, BarProps } from '../Bar';
export interface FooProps {
children?: ReactNode; // this works
// children?: ReactNode<BarProps>; // nope
// children?: Bar; // nope
}
export const Foo: FC<FooProps> = (props) => {
return (
<div>
{props.children}
</div>
);
};
注意:我们没有使用 PropTypes
【问题讨论】:
-
出于好奇,为什么需要对 props.children 有很强的要求?
-
我们的内部组件库需要遵守相当严格的用户体验规范/设计指南。一个人为的例子是不应允许 Table 成为 Dropdown 组件的子组件。
标签: reactjs typescript