From 2c4c5a56cdf7eef61f04d9269608704de1423ec2 Mon Sep 17 00:00:00 2001 From: Sergey Gerasimov Date: Tue, 7 Jan 2014 00:00:53 +0400 Subject: [PATCH 1/4] Hashtable definitions --- hashtable/hashtable.d.ts | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 hashtable/hashtable.d.ts diff --git a/hashtable/hashtable.d.ts b/hashtable/hashtable.d.ts new file mode 100644 index 0000000000..323748afe9 --- /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); + + get(key: TKey): TValue; + containsKey(key: TKey): boolean; + containsValue(value: TValue): boolean; + + clear(); + isEmpty(): boolean; + + keys(): TKey[]; + values(): TValue[]; + entries(): any[][]; + + remove(key: TKey): TValue; + size(): number; + + clone(): IHashtable; + each(callback: (key: TKey, value: TValue) => 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 From ecb706d47263a1dc662b588eb1aeed6eb8733526 Mon Sep 17 00:00:00 2001 From: Sergey Gerasimov Date: Tue, 7 Jan 2014 10:43:29 +0400 Subject: [PATCH 2/4] fixed void methods specifications --- hashtable/hashtable.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hashtable/hashtable.d.ts b/hashtable/hashtable.d.ts index 323748afe9..1a5ac47b9c 100644 --- a/hashtable/hashtable.d.ts +++ b/hashtable/hashtable.d.ts @@ -6,13 +6,13 @@ interface IHashtable { put(key: TKey, value: TValue): TValue; - putAll(hashtable: IHashtable, conflictCallback?: (key: TKey, thisValue: TValue, 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(); + clear(): void; isEmpty(): boolean; keys(): TKey[]; @@ -23,7 +23,7 @@ interface IHashtable size(): number; clone(): IHashtable; - each(callback: (key: TKey, value: TValue) => void); + each(callback: (key: TKey, value: TValue) => void): void; equals(hashtable: IHashtable): boolean; toQueryString(): string; From 270bb693f2a4a3e6a66693f1ffce9bd870809724 Mon Sep 17 00:00:00 2001 From: Sergey Gerasimov Date: Tue, 7 Jan 2014 19:51:33 +0400 Subject: [PATCH 3/4] tests added --- hashtable/hashtable-tests.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 hashtable/hashtable-tests.ts diff --git a/hashtable/hashtable-tests.ts b/hashtable/hashtable-tests.ts new file mode 100644 index 0000000000..891d431234 --- /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, y) { + 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 From f7af4e8f6f8794b1e63cb6b653e82128c44074b8 Mon Sep 17 00:00:00 2001 From: Sergey Gerasimov Date: Tue, 7 Jan 2014 20:35:05 +0400 Subject: [PATCH 4/4] fixed type specs --- hashtable/hashtable-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hashtable/hashtable-tests.ts b/hashtable/hashtable-tests.ts index 891d431234..9c90b5729d 100644 --- a/hashtable/hashtable-tests.ts +++ b/hashtable/hashtable-tests.ts @@ -15,7 +15,7 @@ function pointsEqual(p1: Point, p2: Point) { var coloursForPoints = new Hashtable({ hashCode: hashPoint, equals: pointsEqual }); -function getColourAt(x, y) { +function getColourAt(x: number, y: number) { var point = new Point(x, y); return coloursForPoints.get(point); }