我有以下代码,希望可以根据getElementComponent
参数正确选择type
函数的返回类型。我有一个ElementPropsType
,用于根据type参数有条件地返回正确的类型。
每个case语句上的编译器错误都返回带有错误的表达式
类型
React.FunctionalComponent<SimpleElementProps>
无法分配给类型ElementType<ElementPropsType<T>>
复合返回语句也是如此。
我需要帮助,以了解为什么会是这种情况。
type ElementPropsType<T extends ControlType> =
T extends ControlType.SIMPLE ? SimpleElementProps :
T extends ControlType.COMPOSITE ? CompositeElementProps : never;
const SimpleElement : React.FunctionComponent<SimpleElementProps> = () => React.createElement('div');
const CompositeElement : React.FunctionComponent<CompositeElementProps> = () => React.createElement('div');
class ElementFactory {
static getElementComponent<T extends ControlType>(type: T) : React.ElementType<ElementPropsType<T>> {
switch(type) {
case ControlType.SIMPLE: return SimpleElement;
case ControlType.COMPOSITE: return CompositeElement;
default: return SimpleElement;
}
}
}