【发布时间】:2018-12-16 10:00:40
【问题描述】:
我可以像这样得到一个对象的名称:
let name = obj.prototype.constructor.name;
但我想做的是在我的通用 Angular 服务中获取通用类型的名称。
@Injectable({
providedIn: 'root'
})
export class MyService<T> {
private _value: T;
constructor(){}
//... other methods
private error(error: any)
{
console.log(`Error for service type: ${_value.prototype.constructor.name}`)
}
}
_value.prototype.constructor.name 不起作用,类型 T 的原型不存在。
我已经看到 typescript 特定的帖子指出只有在构造函数采用该类型的参数时才可能这样做,因为一旦转译的类型声明被删除,因为它们在 javascript 中不存在。
由于 Angular 通过依赖注入创建此服务,传递类型的正确方法是什么,以便可以以允许我将名称读取为字符串的方式对其进行实例化?
我在这个帖子里看到过:How to get name of generic type T inside service in Angular
它说要使用这个功能:
function createInstance<T>(type: new() => T): T {
return new type();
}
但我看不出我应该如何使用与我上面的角度服务相关的这个功能。
如何获取服务中的字符串?
【问题讨论】:
标签: angular typescript