繁体   English   中英

打字稿:比较作为接口类型的对象是否等于另一个对象具有相同的接口类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM