Avatar ·

如何在 TypeScript 中在运行时获取对象的类名?

大家好!我是 TypeScript 新手,遇到了一个问题。我有一个类层次结构,需要在运行时知道某个对象是哪个类的实例。在普通 JavaScript 中,我会使用 `obj.constructor.name`,但在 TypeScript 中,这并没有按我预期的方式工作。 以下是示例代码: ```typescript class Animal { name: string; constructor(name: string) { this.name = name; } } class Dog extends Animal { breed: string; constructor(name: string, breed: string) { super(name); this.breed = breed; } } const myPet = new Dog('Rex', 'Labrador'); // 尝试获取类名 console.log(myPet.constructor.name); // 在 JS 中有效,但在 TS 中... ``` 问题在于,当 TypeScript 编译为 JavaScript 时,特别是如果使用了代码压缩或打包(例如,webpack 的生产模式),`constructor.name` 可能不会返回 "Dog",而是一个单字母的字符串,甚至返回 `undefined`。我读过