我正在使用typescript 2.0.6的离子2项目。Typescript静态方法继承
我有一个基类管理一些行为,我从这个基类继承几个类。 而且我希望能够获得实际班级的名称(而不是基础班级)。
这里是我的代码:
export class AbstractModel {
oneInstanceMethod() {
this.getClassName();
}
static oneStaticMethod() {
this.getClassName();
}
getClassName() {
return (<any>this).constructor.name;
}
static getClassName() {
return (<any>this).name;
}
}
export class MyClass1 extends AbstractModel {
}
export class MyClass2 extends AbstractModel {
}
而且我有2种电话:要么MyClass1.oneStaticMethod()
或(new MyClass2).oneInstanceMethod()
。我的问题是,此代码之前工作(现在我得到'E',因为它返回函数e())我在我的离子项目中做了一些升级。我认为我的打字稿版本已经升级(我不确定,但我认为它是1.8之前)。
我该如何解决这个问题?我尝试了很多东西(比如创建变量来存储值,但都不能在静态模式和实例模式下工作)。
谢谢!
听起来像你的代码正在被缩小。你发布的代码[似乎按预期工作](https://jsfiddle.net/7bp44voz/)? – Jeroen
您通常可以调整缩小类以保持类和函数的名称不变,但您可能需要重新考虑您的设计(即*为什么*您需要类名?还是用于调试?) – Jeroen
不,我正在写一个ORM,我想在基类中抽象很多东西。我想用类名作为我的SQL表名。 –