2

汎用機能コンポーネントを作成することは可能ですか?

次の例のようなものがうまくいくと思いました:

type MyComponentProps<T> = T & {
    component: ComponentType<T>, 
    primary?: boolean, 
    size?: 'S' | 'M' | 'L'
}


const MyComponent: ComponentType<MyComponentProps<T>> = ({ component, size, primary,...rest }) => {
    /* ... */
}

... だがしかし

コンポーネントを関数として宣言し、 React.ComponentType 宣言を省略すると、宣言はうまくいくようです:

function MyComponent<T>({ size, primary, component, ...rest }: MyComponentProps<T>) {
    /* ... */
}

しかし、コンポーネントをそのように書くと、TSX (私は最新の create-react-app を使用しています) は、React.ComponentType 宣言が欠落しているため、それをコンポーネントとして認識しなくなりました。

4

1 に答える 1