我有许多后端控制器的通用提供程序,如下所示:
@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类型的任何内容。
AFAIK,通用部分(T)没有被转换成JavaScript,所以它实际上不存在。这意味着您将无法直接使用T,除非可以说是“界面”。有没有办法可以将T或T的构造函数的实例传递给CommonMasterdataProvider的构造函数?这样你就能得到这个名字。