【问题标题】:Generic typescript interface通用打字稿接口
【发布时间】:2017-04-15 13:34:11
【问题描述】:

我看到了一些例子,让我觉得它可能会起作用,但我无法让以下内容起作用。在下文中,C 泛型代表一个类类型,I 泛型代表一个接口类型。但是,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。

【问题讨论】:

  • typeof 将始终返回 'object'
  • switch 语句与typeof 配合得很好。问题在于将new SomeClass() 转换为通用接口I
  • 您可以使用以下命令禁用类型检查:return new SomeClass() as any;
  • 好的,谢谢。我决定删除通用的I,并明确地声明可能的接口类型。

标签: typescript typescript-generics


【解决方案1】:

您可以将其转换为I

return <I>new SomeClass();

或者你可以让C扩展I

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

【讨论】:

    猜你喜欢
    • 2017-08-31
    • 2017-09-02
    • 2017-11-08
    • 1970-01-01
    • 2020-08-14
    • 2019-05-04
    • 1970-01-01
    • 2013-01-26
    • 2021-02-04
    相关资源
    最近更新 更多