【发布时间】:2017-12-24 21:29:42
【问题描述】:
我有一个抽象类,它有一个抽象的泛型方法,看起来像这样
protected abstract getData<T>(): T[];
然后我有一个扩展这个抽象类的类。由于getData 是抽象的,我必须在子类中实现它。
它看起来像这样
protected getDataList<T>(): T[] {
return this.databaseService().getSomethingList();
}
getSomethingList()returns Something[]
我收到以下错误
类型“Something[]”不可分配给类型“T[]”。
我尝试了一些方法来解决此错误,但似乎必须使子实现也通用化才能让 Typescript 满意。在我将 Typescript 从 2.2.1 升级到 2.4.1 之前,上述实现一直很好。
所以我想知道如何使我的代码再次与 Typescript 2.4.1 兼容?
【问题讨论】:
-
泛型方法不能返回非泛型字段。您要么必须使
Something扩展通用对象,要么将返回类型更改为对象。 -
你有 getData 和 getDataList。那是错字吗?你可以这样做吗?受保护的抽象 getData
(): T[]; protected getData (): Something[] { return this.databaseService().getSomethingList(); } -
@JGFMK sry,我做例子的时候没想到。
标签: typescript generics