我看到一些例子让我觉得它可能有用,但我无法让以下工作。在下文中,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。
答案 0 :(得分:0)
您可以将其投射到I
。
return <I>new SomeClass();
或者您可以C
延长I
。
createSomeModule<C extends I, I>
//...
return <C>new SomeClass();