基于条件的类型无法正常工作

时间:2019-06-29 15:38:33

标签: typescript

我有以下代码,希望可以根据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;
        }
    }
}

0 个答案:

没有答案