首页 > 解决方案 > 如果两个元组使用 Typescript 相等,你如何比较?

问题描述

标题说明了一切。正如您在下面看到的,比较包含相等值的 2 个元组以获取相等返回false

➜  algo-ts git:(master) ✗ ts-node
> const expected: [number, number] = [4, 4];
undefined
> const actual: [number, number] = [4, 4];
undefined
> actual == expected
false
> actual === expected
false

无论元组的类型如何,比较元组的惯用方法是什么?

标签: typescripttuples

解决方案


那是因为您正在比较您的元组引用而不是每个值的相等性。

只要您的元组仅包含原语,您就可以执行以下操作:

equals(expected:[number,number],actual:[number,number]): boolean{
    return expected[0] === actual[0] && expected[1] === actual[1];
}

但是,如果您不想将元​​组与对象进行比较,则还需要为您的对象定义这样的 equals 函数。

这取决于具体类型应该如何实现 equals 方法,因此对象相等没有“灵丹妙药”。


推荐阅读