【发布时间】:2019-10-29 00:22:23
【问题描述】:
class Base {
static f(){console.log('Base')}
}
class A extends Base {
static f(){console.log('A')}
}
class B extends Base {
static f(){console.log('B')}
}
let obj: A|B = new A()
obj.<what to put here>.f()
我不知道 obj 的确切类,我需要打印 A 或调用 f() 以获得正确的 obj 类。
例如,我不仅需要类名。 我正在做更复杂的事情。
prototype, typeof, constructor似乎都是语法错误。
【问题讨论】:
-
您是否保证
obj是A或B的实例? -
Object.getPrototypeOf(obj).constructor.f();为我工作 -
obj.constructor.f()肯定不是语法错误。你的意思是你得到一个类型错误?如果有,是哪一个? -
Typescript 认为
obj.constructor是Function,因此会显示错误,但在转换为<any>时可以正常工作。Object.getPrototypeOf(obj).constructor.f()工作。
标签: javascript typescript class static static-methods