比较打字稿中派生类的实例和相同的父类

问题描述 投票:0回答:1

我有两个扩展了同一个父类的类,如下所示:

class parentClass{ ... }
class son extends parentClass{ ... }
class daughter extends parentClass{ ... }

我想要类似的代码:

typeof a === typeof b

仅当两个变量都是相同派生类的实例(例如,在此示例中为sondaughter时,才返回true。

typescript inheritance comparison derived-class typeof
1个回答
0
投票

我想要类似的代码:

typeof a === typeof b

仅当两个变量都是相同派生类的实例(例如,在此示例中为sondaughter时,才返回true。

否,如果abany类型的对象(包括与parentClass完全无关的对象),则返回true,因为对于任何对象,typeof均为"object",当然,"object" === "object"为true。

[instanceof返回true,如果左侧操作数的原型链包含右侧操作数.prototype属性所引用的对象,因此instanceof将按照您描述的方式工作:

a instanceof parentClass === b instanceof parentClass

实时示例(使用标准名称):

class ParentClass { }
class Son extends ParentClass { }
class Daughter extends ParentClass { }

const a = new Son();
const b = new Daughter();

console.log(a instanceof ParentClass === b instanceof ParentClass);
© www.soinside.com 2019 - 2024. All rights reserved.