From 9facd2c541c5e2faf5760e5fa0b5c55a45bc831c Mon Sep 17 00:00:00 2001 From: Ethan Lozano Date: Fri, 13 Mar 2015 23:15:10 -0700 Subject: [PATCH 1/2] Added more overloaded d3.map constructors (issue 3869) --- d3/d3.d.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/d3/d3.d.ts b/d3/d3.d.ts index 2bb239250..d1e69c54c 100644 --- a/d3/d3.d.ts +++ b/d3/d3.d.ts @@ -549,10 +549,17 @@ declare module D3 { functor(value: (p : R) => T): (p : R) => T; functor(value: T): (p : any) => T; - map(): Map; - set(): Set; - map(object: {[key: string]: T; }): Map; - set(array: T[]): Set; + map: { + (): Map; + (object: {[key: string]: T; }): Map; + (map: Map): Map; + (array: T[]): Map; + (array: T[], keyFn: (object: T, index?: number) => string): Map; + }; + set: { + (): Set; + (array: T[]): Set; + }; dispatch(...types: string[]): Dispatch; rebind(target: any, source: any, ...names: any[]): any; requote(str: string): string; From 10dffb326a363d46346558420f7956f32587e4d3 Mon Sep 17 00:00:00 2001 From: Ethan Lozano Date: Sat, 14 Mar 2015 00:13:50 -0700 Subject: [PATCH 2/2] Added d3.map tests --- d3/d3-tests.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/d3/d3-tests.ts b/d3/d3-tests.ts index 1a2b5f1c5..51c51f608 100644 --- a/d3/d3-tests.ts +++ b/d3/d3-tests.ts @@ -47,6 +47,37 @@ function testPieChart() { }); } +function testMapConstructor() { + //No arg constructor + var emptyMap: D3.Map = d3.map(); + + //Object constructor + var object:{[key: string]: number } = {a: 1, b: 2, c: 3}; + var objectMap: D3.Map = d3.map(object); + + //Array constructor + var numberArray: number[] = [1, 2, 3] + var numberArrayMap: D3.Map = d3.map(numberArray); + + //Array with keyFn constructor + var objectArray: {key: string}[] = [{key: "v1"}, {key: "v2"}, {key: "v3"}]; + var indexes: number[] = []; + //keyFn with index + var objectArrayMap1: D3.Map<{key: string}> + = d3.map<{key: string}>(objectArray, (o: {key: string}, index: number) => { + indexes.push(index); + return o.key; + }); + //keyFn without index + var objectArrayMap2: D3.Map<{key: string}> + = d3.map<{key: string}>(objectArray, (o: {key: string}) => { + return o.key; + }); + + //Map constructor + var duplicateMap: D3.Map = d3.map(numberArrayMap); +} + //Example from http://bl.ocks.org/3887051 interface GroupedData { State: string;