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

时间:2019-04-07 19:31:56

标签: javascript typescript es6-class

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

class A {
  ...
}

class B extends A {
  ...
}

assert(B extends A) // How to do something like this?

答案:

多种方法。感谢@Daniel和@AviatorX

B.prototype instanceof A        // true
Object.getPrototypeOf(B) === A  // true
Reflect.getPrototypeOf(B) === A // true

不知道最常用的TypeScript惯用方式是什么,或者是否缺少任何边缘情况但对于我的用例有用

1 个答案:

答案 0 :(得分:1)

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

export class A {
}

export class B extends A {
}

console.log(B.prototype instanceof A);

为我输出true