我有许多后端控制器的通用提供程序,如下所示:
@Injectable()
export class CommonMasterdataProvider<T> {
private readonly route:string = '/api/';
constructor(private http:HttpClient) {
this.route = this.route + T.name; //?? What can I use to get the type name here?
}
我可以将它注入我的组件控制器,但如果我能得到匿名类型名称的名称会很好。 基本上我正在寻找c#nameof()运算符的TypeScript版本。或Javascript方式,但即使在缩小代码后它也必须工作。
我尝试在构造函数中添加一个新的字符串参数,但是这样Angular注入器抛出了一个异常,它找不到类型String的任何内容。
答案 0 :(得分:3)
AFAIK,通用部分(T)没有被转换成JavaScript,所以它实际上不存在。这意味着您将无法直接使用T,除非可以说是“界面”。 有没有办法可以将T或T的构造函数的实例传递给CommonMasterdataProvider的构造函数?这样你就能得到这个名字。