【发布时间】:2018-06-14 06:35:40
【问题描述】:
我有一个数据存储,并想创建一个从存储加载数据的方法。 存储包含不同类型(类)的数据。 假设我的商店包含(除其他外)作者类型的数据。 我想加载 id 为 1 的作者:
const author1 = store.loadById(Author, 1);
现在我必须如何使用泛型来让 TS 编译器知道 author1 是 Author 的一个实例?
我现在有
public loadById<T>(entityClass: T, id: number): T {
const entity;
// logic to load the entity ...
return entity;
}
但这是错误的,因为现在 TSC 认为我的方法返回的是 entityClass 而不是 entityClass 的实例。 那么如何指定方法的返回类型才能让 author1 成为 Author 的实例呢?
【问题讨论】:
-
你真的需要方法中的类吗?如果不是,
loadById<Author>(1)提供泛型类型。否则,我想你想要typeof T。 -
@jonrsharpe
typeof不适用于泛型参数。 -
@TitianCernicova-Dragomir 啊,谢谢;我会回复说你需要一个
new签名,但是你已经写了那个答案!
标签: typescript generics