Решение
Укажите, что MapKindToComponentT
принимает компоненты функций любого вида.
type MapKindToComponentT = {
[key: string]: React.SFC<any>
}
Объяснение
Параметр типа по умолчанию (тот, который описывает Props
) для React.SFC
, определенный в @types/react
, равен {}
.
type SFC<P = {}> = FunctionComponent<P>;
Если компонент ожидает некоторый более точный тип в качестве своего реквизита, например { foo: string }
:
declare const SomeComponent: React.SFC<{ foo: string }>;
такой компонент не будет назначен на React.SFC
.
const MyComponent: React.SFC = SomeComponent; // ⛔️ Compile-time error
const MyComponent: React.SFC<any> = SomeComponent; // ✅ OK