Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular TypeScript:如何访问泛型类的静态方法_Angular_Typescript_Generics - Fatal编程技术网

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通常在注册过程中提供一个附加参数,指定要使用的工厂。您能告诉我们您注册对象的位置和方式吗?欢迎:)