Javascript Typescript:比较作为接口类型的对象是否等于另一个对象具有相同的接口类型
我有以下界面:Javascript Typescript:比较作为接口类型的对象是否等于另一个对象具有相同的接口类型,javascript,typescript,Javascript,Typescript,我有以下界面: export interface IDateRangeOperation { getDateRange(): DateRange; } 并有以下课程: export class DefaultRangeItem { name: String; operation: IDateRangeOperation; constructor(name: String, operation: IDateRangeOperation){ this
export interface IDateRangeOperation {
getDateRange(): DateRange;
}
并有以下课程:
export class DefaultRangeItem {
name: String;
operation: IDateRangeOperation;
constructor(name: String, operation: IDateRangeOperation){
this.name = name;
this.operation = operation;
}
isEqual(defaultRangeItem: DefaultRangeItem): Boolean {
return this.name === defaultRangeItem.name;
}
getDateRange(): DateRange {
return this.operation.getDateRange();
}
}
我有几个类实现了IDateRangeOperation
我想要的是在
isEqual函数中比较两个DefaultRangeSitem
的操作对象(在isEqual
函数上接收的操作对象与当前DefaultRangeItem
上的操作对象)正如@jcalz在评论中所说的,这是一个重复的问题,但我会根据上面给出的信息,通过指出我所做的改变来回答这个问题。记住:
Typescript是Javascript的类型化超集,可编译为纯Javascript
因此,如果在javascript中工作,那么在typescript中工作
回到我的情况,我改变了这一点:
isEqual(defaultRangeItem: DefaultRangeItem): Boolean {
return this.name === defaultRangeItem.name;
}
为此:
isEqual(defaultRangeItem: DefaultRangeItem): Boolean {
return this.key === defaultRangeItem.key && this.name === defaultRangeItem.name &&
this.operation.constructor === defaultRangeItem.operation.constructor;
}
并知道isEqual函数
还验证操作的对象类型:IDateRangeOperation代码>正在等待
重要注意事项:这仅验证对象操作
是否为同一类的实例。我认为我们需要知道如何定义IDateRangeOperation
值之间的等价性,然后才能向您提出建议。如果它们是同一类的实例,它们是否相等?只有当它们是同一类的实例并且具有相同但未知的属性时,它们才相等吗?只有当它们是内存中完全相同的对象时,它们才相等吗?或者你还有其他关于平等的概念吗?我只是想知道它们是否是同一个类的实例,那么这只是对我有用的?@jcalz的复制品吗。我将回答这个问题,指出我如何解决这个特殊情况下的问题,并将标记为重复