有没有一种方法可以在Typescript中自动检查数据类型的数据相等性

Is there a way to automatically check data equality for data type in Typescript?

本文关键字:数据类型 检查 数据 Typescript 一种 方法 有没有      更新时间:2023-09-26

Python中,您可以执行类似的操作

>>> a = ('a', 'b')
>>> b = ('a', 'b')
>>> a == b
True

然而在Typescript

    type test = [string, string];
    var data1: test = ['a', 'b'];
    var data2: test = ['a', 'b'];
    console.log(data1 == data2);    // return false
    console.log(data1 === data2);   // return false

对相同类型的两个数据的相等性检查使用引用,我知道我可以循环遍历数组,但是否有类似于Python tuple的语法糖来检查数据相等性?

有没有一种方法可以自动检查Typescript中数据类型的数据相等性?

没有。这种情况与JavaScript中的情况相同,即您需要一个库或自定义代码。

在实践中,这个问题的正确答案几乎总是使用Lodash的_.isEqual函数:

import _ = require("lodash");
type test = [string, string];
var data1: test = ['a', 'b'];
var data2: test = ['a', 'b'];
console.log(_.isEqual(data1, data2));

这将为你做深入的平等比较,类似于你对其他语言的期望。

TypeScript没有现成的这个功能,这种情况与JavaScript中遇到的情况完全相似:你需要递归地扫描对象(我相信Python也在做类似的事情)。

为了实现测试目的的快速临时比较,您可以将值转换为JSON字符串,然后比较这些字符串:

JSON.stringify(data1) == JSON.stringify(data2); // true