[英]Typescript: Compare if the object that is the type of an Interface is equal to another object has the same Interface type
我有以下界面:
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 function
比较两个DefaultRangesItems
的操作对象的方法(在该对象上, isEqual
函数与当前DefaultRangeItem
上的当前对象进行比较)
就像@jcalz在评论中所说的,这是一个重复的问题,但是我将根据这篇文章中给出的信息,通过指出要使它起作用的更改来回答。 记得:
Typescript是Javascript的类型化超集,可编译为纯Javascript。
因此,如果可以在javascript中工作,则可以在打字稿中工作。
回到我的情况,我改变了这一点:
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 function
还可以验证该operation: IDateRangeOperation;
的对象类型operation: IDateRangeOperation;
持有。
重要说明:这仅验证对象operation
是否为同一类的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.