我有一个抽象基类,其中有许多不同的子类对其进行扩展。如果给定了该类的两个实例,是否可以检查它们是否具有相同的子类型?
我想做这样的事情,但是typeof只是返回“对象”,所以它毫无用处
compare(a: Parent, b: Parent): boolean {
return typeof a === typeof b
}
答案 0 :(得分:2)
也许可以通过比较the constructor property:
compare(a: Parent, b: Parent): boolean {
return a.constructor === b.constructor
}
但这不是一个坚如磐石的解决方案,因为属性constructor
can be reassigned:
以下示例显示如何修改通用对象的构造函数值。由于
true
,1
和"test"
具有只读的本机构造函数,因此不会受到影响。此示例说明依赖对象的constructor
属性并不总是安全的。 […]