【发布时间】:2020-05-07 22:45:44
【问题描述】:
我有一个抽象类:
export enum SingularPluralForm {
SINGULAR,
PLURAL
};
export abstract class Dog {
// ...
}
我有一个扩展抽象类的类:
export class Pug extends Dog {
// ...
static readonly kindNames = {
[SingularPluralForm.SINGULAR]:
'pug',
[SingularPluralForm.PLURAL]:
'pugs'
};
// ...
}
我还有一个使用泛型的参数化类,需要访问kindNames:
export class Playground<T extends Dog> {
// ...
getKindName(form: SingularPluralForm) {
// need to return T.kindNames[form] here...
}
// ...
}
如何从那里访问T.kindNames[form]?
请您好心帮忙。谢谢。
UPD1:我会将Pug 类传递给Playground 的构造函数,但问题是Playground 类实际上是一个Angular 组件,它是由框架初始化的,而不是手动初始化的。 :-(
【问题讨论】:
-
运行时没有
T;你需要编写 ES2015+ 类并给它们类型。这意味着您的Playground类构造函数需要接受另一个类的构造函数的参数,如果它有机会访问它的属性。如果上一条评论中的代码满足您的需求,我会写出来作为答案;否则,请在问题中添加更多细节以区分您的用例。祝你好运! -
@jcalz,谢谢,我考虑过这样做,但问题是
Playground实际上是一个 Angular 组件,它正在被框架初始化。 -
根据初始化的位置,angular 通常会在注册过程中提供一个额外的参数来指定要使用的工厂。您能告诉我们您在哪里以及如何注册该对象吗?
-
不客气 :)
标签: angular typescript generics