出于调试目的,我想要一个抽象类的toString()
方法来打印实例实际上是哪个子类。
abstract FrameModel {
...
public toString() {
var classOfThis = ?????;
return `FrameModel<${classOfThis}>#${this.vertexId}`;
}
}
如果我可以在TypeScript中使用该类来访问static
成员,那就太棒了。换句话说,如果我得到了CodeScript放置static
字段的JavaScript构造函数。
我试过
var classOfThis = Object.getPrototypeOf(this).constructor;
但那不是它:)
答案 0 :(得分:1)
使用Object.getPrototypeOf(this).constructor
确实有效:
type AConstructor = {
new(): A;
name: string;
}
abstract class A {
toString(): string {
return `class: ${ (Object.getPrototypeOf(this).constructor as AConstructor).name }`;
}
}
class B extends A {}
class C extends A {}
let b = new B();
console.log(b.toString()); // class: B
let c = new C();
console.log(c.toString()); // class: C
我不确定为什么它不适合你,我需要看到更多你的代码
无论如何,您还可以使用:this.constructor
:
toString(): string {
return `class: ${ (this.constructor as AConstructor).name }`;
}