我正在使用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表名。 –