diff --git a/hashtable/hashtable-tests.ts b/hashtable/hashtable-tests.ts new file mode 100644 index 0000000000..9c90b5729d --- /dev/null +++ b/hashtable/hashtable-tests.ts @@ -0,0 +1,25 @@ +/// + +class Point { + constructor(public x: number, public y: number) { + } +} + +function hashPoint(p: Point) { + return "Point:" + p.x + "," + p.y; +} + +function pointsEqual(p1: Point, p2: Point) { + return p1.x === p2.x && p1.y === p2.y; +} + +var coloursForPoints = new Hashtable({ hashCode: hashPoint, equals: pointsEqual }); + +function getColourAt(x: number, y: number) { + var point = new Point(x, y); + return coloursForPoints.get(point); +} + +coloursForPoints.put(new Point(1, 2), "green"); + +alert(getColourAt(1, 2)); // Alerts green \ No newline at end of file diff --git a/hashtable/hashtable.d.ts b/hashtable/hashtable.d.ts new file mode 100644 index 0000000000..1a5ac47b9c --- /dev/null +++ b/hashtable/hashtable.d.ts @@ -0,0 +1,48 @@ +// Type definitions for jshashtable 3.0 +// Project: http://www.timdown.co.uk/jshashtable/ +// Definitions by: Sergey Gerasimov +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +interface IHashtable +{ + put(key: TKey, value: TValue): TValue; + putAll(hashtable: IHashtable, conflictCallback?: (key: TKey, thisValue: TValue, value: TValue) => TValue): void; + + get(key: TKey): TValue; + containsKey(key: TKey): boolean; + containsValue(value: TValue): boolean; + + clear(): void; + isEmpty(): boolean; + + keys(): TKey[]; + values(): TValue[]; + entries(): any[][]; + + remove(key: TKey): TValue; + size(): number; + + clone(): IHashtable; + each(callback: (key: TKey, value: TValue) => void): void; + + equals(hashtable: IHashtable): boolean; + toQueryString(): string; +} + +interface IHashtableOptions { + hashCode?: (key: TKey) => any; + equals?: (key1: TKey, key2: TKey) => boolean; + replaceDuplicateKey?: boolean; +} + +interface IHashtableStatic { + new (): IHashtable; + new (options: IHashtableOptions): IHashtable; + new (hashCode?: (value: TValue) => any, equals?: (value1: TValue, value2: TValue) => boolean): IHashtable; +} + +declare var Hashtable: IHashtableStatic; + +declare module "hashtable" { + export = Hashtable; +} \ No newline at end of file