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

时间:2018-10-23 12:22:42

标签: javascript typescript

我有以下界面:

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}})

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是否是同一类的实例。