Open2
Listを題材に、Material-UIの型システムを掘り下げる
declare const List: OverridableComponent<ListTypeMap>;
ここから始める
/**
* A component whose root component can be controlled via a `component` prop.
*
* Adjusts valid props based on the type of `component`.
*/
export interface OverridableComponent<M extends OverridableTypeMap> {
<C extends React.ElementType>(
props: {
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: C;
} & OverrideProps<M, C>,
): JSX.Element;
(props: DefaultComponentProps<M>): JSX.Element;
}
OverridableComponent
の構造を読み解く。
この型自体は、component
属性でHTMLタグを変更できるものに対して与えられる型である。