我的通用课程
export class BaseService<T> {
public subUrl;
constructor(public repo:RepogitoryService) { }
}
Run Code Online (Sandbox Code Playgroud)
如何将T的类名存储在局部变量上?
dur*_*k10 15
你必须明白,Typescript只是一个转换器(编译器到javascript).一些语法糖(例如泛型)仅在类型检查阶段起作用(并且它对IDE /文本编辑器中的intellisense有帮助).
但是,对变量的赋值是在运行时进行的,在运行时它只是一个简单的Javascript.运行时没有类型也没有泛型.
但这是我最简单的方法:
class Some<T> {
private TName : string;
constructor(x : T&Function) {
this.TName = x.name;
}
}
class Another {
}
const some = new Some<Another>(Another);
Run Code Online (Sandbox Code Playgroud)
不幸的是,你不能.Typescript是一个静态类型检查器,在runetime不支持类型反射,例如java.这是因为它的来源被转换为javascript.
但是,未来有这种支持的希望,有一个名为"自定义变换器"的新打字稿功能.那些变换器是插入蒸发过程的插件,打开了关于类型反射的丰富功能的道路.这样的第一个例子是ts-transformer-keys.
durisvk10解决办法涵盖的话题,只是想补充一点,我宁愿用
x: new () => T
比x: T&Function.
像这样:
...
constructor(x : new () => T) {
this.TName = x.name;
}
...
Run Code Online (Sandbox Code Playgroud)
将对象转换为Object并获取构造函数名称?
function nameOf(object: Object): string {
return object.constructor.name;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11870 次 |
| 最近记录: |