我有以下界面:
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
函数上接收的操作对象与当前{ {1}})
答案 0 :(得分:0)
正如@jcalz在评论中所说,这是一个重复的问题,但是我将根据在this post上给出的信息指出要使它起作用的内容,以作答。记住:
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
是否是同一类的实例。