Angular TypeScript:如何访问泛型类的静态方法
我有一个抽象类:Angular TypeScript:如何访问泛型类的静态方法,angular,typescript,generics,Angular,Typescript,Generics,我有一个抽象类: export enum SingularPluralForm { SINGULAR, PLURAL }; export abstract class Dog { // ... } export class Pug extends Dog { // ... static readonly kindNames = { [SingularPluralForm.SINGULAR]: 'pug', [SingularPlural
export enum SingularPluralForm {
SINGULAR,
PLURAL
};
export abstract class Dog {
// ...
}
export class Pug extends Dog {
// ...
static readonly kindNames = {
[SingularPluralForm.SINGULAR]:
'pug',
[SingularPluralForm.PLURAL]:
'pugs'
};
// ...
}
我有一个扩展抽象类的类:
export enum SingularPluralForm {
SINGULAR,
PLURAL
};
export abstract class Dog {
// ...
}
export class Pug extends Dog {
// ...
static readonly kindNames = {
[SingularPluralForm.SINGULAR]:
'pug',
[SingularPluralForm.PLURAL]:
'pugs'
};
// ...
}
我还有一个参数化类,它使用泛型,需要访问类名
:
export class Playground<T extends Dog> {
// ...
getKindName(form: SingularPluralForm) {
// need to return T.kindNames[form] here...
}
// ...
}
导出类游乐场{
// ...
getKindName(格式:SingularPluralForm){
//需要在此处返回T.kindNames[表格]。。。
}
// ...
}
如何从那里访问T.kindNames[form]
请帮忙。多谢各位
UPD1:我会将Pug
类传递给playway
的构造函数,但问题是playway
类实际上是一个角度组件,它由框架初始化,而不是手动初始化-(根据评论发布,并重新措辞为更全面一点
根据初始化的位置,angular通常在注册期间提供一个附加参数,指定要使用的工厂 您可以查看[component loading]
也许,您可以通过直接将属性与内部DTO或对象本身上的装饰器绑定来解决问题。在运行时没有
T
;您需要编写ES2015+类并为它们提供类型。这意味着您的操场
类构造函数需要接受另一个类的参数如果有机会访问其属性,请使用的构造函数。如果前面注释中的代码满足您的需要,我将把它作为一个答案写下来;否则,请在问题中添加更多细节以区分您的用例。祝您好运!@jcalz,谢谢,我考虑过这样做,但问题是游乐场
实际上是y是一个角度组件,它正由框架初始化。根据初始化的位置,Angular通常在注册过程中提供一个附加参数,指定要使用的工厂。您能告诉我们您注册对象的位置和方式吗?欢迎:)