通用打字稿界面

时间:2016-12-01 02:37:31

标签: typescript typescript-generics

我看到一些例子让我觉得它可能有用,但我无法让以下工作。在下文中,C generic表示类类型,I generic表示接口类型。但是,return new SomeClass()抱怨:Type SomeClass is not assignable to type I

class SomeFactory implements ISomeFactory {
    createSomeModule<C, I>(clas?: C, options?: IFactoryOptions): I {
            switch (typeof (clas)) {
                case 'SomeClass':
                    return new SomeClass(); 
                ...
            }
    }
}

这应该像我想的那样工作吗?我错过了什么吗?或者那只是不支持。我正在使用Typescript版本2.10运行VS Code。

1 个答案:

答案 0 :(得分:0)

您可以将其投射到I

return <I>new SomeClass();

或者您可以C延长I

createSomeModule<C extends I, I>
//...
return <C>new SomeClass();