如何在运行时检查类B是否扩展了A

Kri*_*son 5 javascript typescript es6-class

在TypeScript / Javscript中,如何检查B类是否扩展了A类

class A {
  ...
}

class B extends A {
  ...
}

assert(B extends A) // How to do something like this?
Run Code Online (Sandbox Code Playgroud)

回答:

几种方法可以做到这一点。感谢@Daniel和@AviatorX

B.prototype instanceof A        // true
Object.getPrototypeOf(B) === A  // true
Reflect.getPrototypeOf(B) === A // true
Run Code Online (Sandbox Code Playgroud)

不知道最常用的TypeScript惯用方式是什么,或者不确定是否缺少任何边缘情况,但不能满足我的用例

Dan*_*iel 1

您可以使用instanceof检查构造函数原型是否是 的实例A

export class A {
}

export class B extends A {
}

console.log(B.prototype instanceof A);
Run Code Online (Sandbox Code Playgroud)

true为我输出。