Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Typescript:比较作为接口类型的对象是否等于另一个对象具有相同的接口类型_Javascript_Typescript - Fatal编程技术网

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的复制品吗。我将回答这个问题,指出我如何解决这个特殊情况下的问题,并将标记为重复