定义组件的类型

时间:2019-05-15 08:09:32

标签: reactjs typescript material-ui

我使用Link中的4.0.0-beta.2组件-它具有一个字段component-可以覆盖根元素。

我想围绕Link-MyLink创建一个包装器,并通过props传递组件:

interface Props {
  component: ???
}

const MyLink = ({component}: Props) => {
  <MUILink component={component} ... />
}

因此从类型定义中,我没有得到如何构造component道具的最终类型的方法:

declare const Link: OverridableComponent<{
  props: LinkBaseProps & {
    TypographyClasses?: TypographyProps['classes'];
    underline?: 'none' | 'hover' | 'always';
  };
  defaultComponent: 'a';
  classKey: LinkClassKey;
}>;

和OverridableComponent:

/**
 * a component whose root component can be controled via a `component` prop
 *
 * Adjusts valid props based on the type of `component`
 */
export interface OverridableComponent<M extends OverridableTypeMap> {
  <C extends React.ElementType>(props: { component: C } & OverrideProps<M, C>): JSX.Element;
  (props: DefaultComponentProps<M>): JSX.Element;
}

有人可以帮我定义component的类型吗?

1 个答案:

答案 0 :(得分:2)

看起来像

interface Props {
  component: React.ElementType
}

起到Link组件的作用。