在运行时获得对象的类名

15 浏览
0 Comments

在运行时获得对象的类名

在TypeScript中,是否有可能在运行时获取一个对象的类/类型名称?

class MyClass{}
var instance = new MyClass();
console.log(instance.????); // Should output "MyClass"

admin 更改状态以发布 2023年5月24日
0
0 Comments

我的解决方案不是依赖于类名。在理论上,object.constructor.name能够正常工作。但如果你在像Ionic这样的东西中使用TypeScript,当你进入生产模式时,它就会燃起来,因为Ionic的生产模式会缩小JavaScript代码。所以类会被命名为"a"和"e"之类的东西。

我最终做的是给所有的对象都添加一个typeName类,在构造函数中将类名分配给它。所以:

export class Person {
id: number;
name: string;
typeName: string;
constructor() {
typeName = "Person";
}

是的,这不是真正要求的。但是在可能被缩小的代码上使用constructor.name只会引发大麻烦。

0
0 Comments

简单回答:

class MyClass {}
const instance = new MyClass();
console.log(instance.constructor.name); // MyClass
console.log(MyClass.name);              // MyClass

但是要注意,当使用压缩代码时,名称可能会不同。

0