Object Equality in Typescript
本问题已经有最佳答案,请猛点这里访问。
我在typescript中创建向量库。我的第一次测试失败了:)。
它与typescript/javascript中的对象相等有关,但我找不到使测试变绿的方法。typescript的官方文档http://www.typescriptlang.org/handbook classes中没有提到对象相等性。
有人能帮我一下吗?
这是源代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Vector { x: number; y: number; constructor(x: number, y: number) { this.x = x; this.y = y; } add(that: Vector) { return new Vector(this.x + that.x, this.y + that.y); } } export = Vector; |
然后我对这门课做了如下的单元测试
1 2 3 4 5 6 7 8 9 | var Vector = require("../lib/vector") describe("vector", function () { it("should add another vector", function () { var v1 = new Vector(1, 1); var v2 = new Vector(2, 3); expect(v1.add(v2)).toEqual(new Vector(3, 4)); }); }); |
执行时获得以下错误
1 2 3 | Failures: 1) vector should add another vector 1.1) Expected Vector({ x: 3, y: 4 }) to be Vector({ x: 3, y: 4 }). |
您的测试用例应该可以工作。这里是传给jsiddle的。
但是,您的实际代码似乎使用的是
Expected Vector({ x: 3, y: 4 }) to be Vector({ x: 3, y: 4 }).
使用
typescript对象相等性与javascript对象相等性相同。这是因为typescript只是javascript。