Typescript 不会向 JavaScript 添加任何功能。它只是“键入”和一些语法改进。
所以,没有办法覆盖equals
与您在 C# 中所做的方式等效。
但是,您最终可能会使用Hash
或强类型Dictionary
在 C# 中进行有效的查找(除了可能的数组之外),而不是使用“索引”函数。
为此,我建议您使用关联数组结构来存储Point
s.
你会做类似的事情:
class Point {
constructor(public x:Number = 0,
public y:Number = 0 ) {
}
public toIndexString(p:Point):String {
return Point.pointToIndexString(p.x, p.y);
}
static pointToIndexString(x:Number, y:Number):String {
return x.toString() + "@" + y.toString();
}
}
var points:any = {};
var p: Point = new Point(5, 5);
points[p.toIndexString()] = p;
If a Point
不存在,正在检查points
将返回关联数组undefined
.
包装数组的函数很简单:
function findPoint(x:Number, y:Number):Point {
return points[Point.pointToIndexString(x, y)];
}
循环遍历所有点很容易:
// define the callback (similar in concept to defining delegate in C#)
interface PointCallback {
(p:Point):void;
}
function allPoints(callback:PointCallback):void {
for(var k in points) {
callback(points[k]);
}
}
allPoints((p) => {
// do something with a Point...
});