需要子代的功能组件的Typescript接口

时间:2019-05-31 07:11:00

标签: reactjs typescript

我通常使用以下模式定义功能性反应组件:

interface Props {
    title: string; //for example
}

export const MyComponent : React.FunctionComponent<Props> = (props) => {
    const {
        title, 
        children //This is implied as allowed by the FunctionalCompoment interface I believe

    } = props; 

     return <div>{title}{children}</div> 
}

我有一个必须的组件,就像很多react组件一样。

我该如何执行?

在相关说明中,是否可以强制要求子代必须具有某种类型的React组件?

2 个答案:

答案 0 :(得分:2)

这是一种内置方式,但是子类型是可选的。

export const MyComponent : React.FunctionComponent<React.PropsWithChildren<Props>> = (props) => {
  const {
    title,
    children //This is implied as allowed by the FunctionalCompoment interface I believe

  } = props;

  return <div>{title}{children}</div>
}

我建议您创建自己的类型或接口

type MustHaveChildren<T> = T & { children: ReactNode }

interface MustHaveChildren {
 children: ReactNode
}

interface T extends MustHaveChildren {
 .... // your types
}

用法:

类型

export const MyComponent : React.FunctionComponent<MustHaveChildren<Props>> = 
  (props) => (...)

接口

export const MyComponent : React.FunctionComponent<Props> = 
  (props) => (...)

答案 1 :(得分:-1)

创建用于扩展其他接口的基本接口?

interface MustHaveChildren {
  children;
}

interface Props extends MustHaveChildren {
  title: string;
}