有没有办法在Typescript中自动检查数据类型的数据相等性?

时间:2016-04-18 06:13:22

标签: javascript typescript typescript1.8

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的数据相等性吗?

3 个答案:

答案 0 :(得分:1)

  

有没有办法在Typescript中自动检查数据类型的数据相等性?

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

答案 1 :(得分:1)

在实践中,对此的正确答案几乎总是使用Lodash的_.isEqual function

import _ = require("lodash");

type test = [string, string];

var data1: test = ['a', 'b'];
var data2: test = ['a', 'b'];

console.log(_.isEqual(data1, data2));

这将为您进行深度平等比较,类似于您期望从其他语言中获得的比较。

答案 2 :(得分:0)

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

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

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