Skip to content

Commit 6ec6acf

Browse files
authored
Merge pull request #12 from types/map-set
ES2015 Collections (Closes #2)
2 parents b85360c + 06085ea commit 6ec6acf

File tree

4 files changed

+161
-17
lines changed

4 files changed

+161
-17
lines changed

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ node_js:
99
- "stable"
1010

1111
script:
12-
- npm run build+test
12+
- npm run build
13+
- npm run build-es6
14+
- npm test

4/node.d.ts

Lines changed: 78 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,84 @@ interface ErrorConstructor {
7878
stackTraceLimit(limit: number): void;
7979
}
8080

81-
// compat for TypeScript 1.8
82-
// if you use with --target es3 or --target es5 and use below definitions,
83-
// use the lib.es6.d.ts that is bundled with TypeScript 1.8.
84-
interface MapConstructor {}
85-
interface WeakMapConstructor {}
86-
interface SetConstructor {}
87-
interface WeakSetConstructor {}
81+
// ES2015 collection types
82+
interface NodeCollection {
83+
size: number;
84+
}
85+
interface NodeWeakCollection {
86+
}
87+
interface NodeCollectionConstructor<T> {
88+
prototype: T;
89+
}
90+
91+
interface Map<K, V> extends NodeCollection {
92+
clear(): void;
93+
delete(key: K): boolean;
94+
entries(): Array<[K, V]>;
95+
forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;
96+
get(key: K): V;
97+
has(key: K): boolean;
98+
keys(): Array<K>;
99+
set(key: K, value?: V): Map<K, V>;
100+
values(): Array<V>;
101+
// [Symbol.iterator]():Array<[K,V]>;
102+
// [Symbol.toStringTag]: "Map";
103+
}
104+
105+
interface MapConstructor extends NodeCollectionConstructor<Map<any, any>> {
106+
new (): Map<any, any>;
107+
new <K, V>(): Map<K, V>;
108+
}
109+
declare var Map: MapConstructor;
110+
111+
interface WeakMap<K, V> extends NodeWeakCollection {
112+
clear(): void;
113+
delete(key: K): boolean;
114+
get(key: K): V | void;
115+
has(key: K): boolean;
116+
set(key: K, value?: V): WeakMap<K, V>;
117+
}
118+
119+
interface WeakMapConstructor extends NodeCollectionConstructor<WeakMap<any, any>> {
120+
new (): WeakMap<any, any>;
121+
new <K, V>(): WeakMap<K, V>;
122+
}
123+
declare var WeakMap: WeakMapConstructor;
124+
125+
interface Set<T> extends NodeCollection {
126+
add(value: T): Set<T>;
127+
clear(): void;
128+
delete(value: T): boolean;
129+
entries(): Array<[T, T]>;
130+
forEach(callbackfn: (value: T, index: T, set: Set<T>) => void, thisArg?: any): void;
131+
has(value: T): boolean;
132+
keys(): Array<T>;
133+
values(): Array<T>;
134+
// [Symbol.iterator]():Array<T>;
135+
// [Symbol.toStringTag]: "Set";
136+
}
137+
138+
interface SetConstructor extends NodeCollectionConstructor<Set<any>> {
139+
new (): Set<any>;
140+
new <T>(): Set<T>;
141+
new <T>(iterable: Array<T>): Set<T>;
142+
}
143+
declare var Set: SetConstructor;
144+
145+
interface WeakSet<T> extends NodeWeakCollection {
146+
add(value: T): WeakSet<T>;
147+
clear(): void;
148+
delete(value: T): boolean;
149+
has(value: T): boolean;
150+
// [Symbol.toStringTag]: "WeakSet";
151+
}
152+
153+
interface WeakSetConstructor extends NodeCollectionConstructor<WeakSet<any>> {
154+
new (): WeakSet<any>;
155+
new <T>(): WeakSet<T>;
156+
new <T>(iterable: Array<T>): WeakSet<T>;
157+
}
158+
declare var WeakSet: WeakSetConstructor;
88159

89160
/************************************************
90161
* *

6/node.d.ts

Lines changed: 78 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,84 @@ interface ErrorConstructor {
7878
stackTraceLimit(limit: number): void;
7979
}
8080

81-
// compat for TypeScript 1.8
82-
// if you use with --target es3 or --target es5 and use below definitions,
83-
// use the lib.es6.d.ts that is bundled with TypeScript 1.8.
84-
interface MapConstructor { }
85-
interface WeakMapConstructor { }
86-
interface SetConstructor { }
87-
interface WeakSetConstructor { }
81+
// ES2015 collection types
82+
interface NodeCollection {
83+
size: number;
84+
}
85+
interface NodeWeakCollection {
86+
}
87+
interface NodeCollectionConstructor<T> {
88+
prototype: T;
89+
}
90+
91+
interface Map<K, V> extends NodeCollection {
92+
clear(): void;
93+
delete(key: K): boolean;
94+
entries(): Array<[K, V]>;
95+
forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;
96+
get(key: K): V;
97+
has(key: K): boolean;
98+
keys(): Array<K>;
99+
set(key: K, value?: V): Map<K, V>;
100+
values(): Array<V>;
101+
// [Symbol.iterator]():Array<[K,V]>;
102+
// [Symbol.toStringTag]: "Map";
103+
}
104+
105+
interface MapConstructor extends NodeCollectionConstructor<Map<any, any>> {
106+
new (): Map<any, any>;
107+
new <K, V>(): Map<K, V>;
108+
}
109+
declare var Map: MapConstructor;
110+
111+
interface WeakMap<K, V> extends NodeWeakCollection {
112+
clear(): void;
113+
delete(key: K): boolean;
114+
get(key: K): V | void;
115+
has(key: K): boolean;
116+
set(key: K, value?: V): WeakMap<K, V>;
117+
}
118+
119+
interface WeakMapConstructor extends NodeCollectionConstructor<WeakMap<any, any>> {
120+
new (): WeakMap<any, any>;
121+
new <K, V>(): WeakMap<K, V>;
122+
}
123+
declare var WeakMap: WeakMapConstructor;
124+
125+
interface Set<T> extends NodeCollection {
126+
add(value: T): Set<T>;
127+
clear(): void;
128+
delete(value: T): boolean;
129+
entries(): Array<[T, T]>;
130+
forEach(callbackfn: (value: T, index: T, set: Set<T>) => void, thisArg?: any): void;
131+
has(value: T): boolean;
132+
keys(): Array<T>;
133+
values(): Array<T>;
134+
// [Symbol.iterator]():Array<T>;
135+
// [Symbol.toStringTag]: "Set";
136+
}
137+
138+
interface SetConstructor extends NodeCollectionConstructor<Set<any>> {
139+
new (): Set<any>;
140+
new <T>(): Set<T>;
141+
new <T>(iterable: Array<T>): Set<T>;
142+
}
143+
declare var Set: SetConstructor;
144+
145+
interface WeakSet<T> extends NodeWeakCollection {
146+
add(value: T): WeakSet<T>;
147+
clear(): void;
148+
delete(value: T): boolean;
149+
has(value: T): boolean;
150+
// [Symbol.toStringTag]: "WeakSet";
151+
}
152+
153+
interface WeakSetConstructor extends NodeCollectionConstructor<WeakSet<any>> {
154+
new (): WeakSet<any>;
155+
new <T>(): WeakSet<T>;
156+
new <T>(iterable: Array<T>): WeakSet<T>;
157+
}
158+
declare var WeakSet: WeakSetConstructor;
88159

89160
/************************************************
90161
* *

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
"main": "index.js",
66
"scripts": {
77
"build": "tsc -p 0.8 && tsc -p 0.10 && tsc -p 0.11 && tsc -p 0.12 && tsc -p 4 && tsc -p 6",
8-
"test": "tsc -p 0.11/test && tsc -p 0.12/test && tsc -p 4/test && tsc -p 6/test",
9-
"build+test": "npm run build && npm test"
8+
"build-es6": "tsc --target es6 -p 0.8 && tsc --target es6 -p 0.10 && tsc --target es6 -p 0.11 && tsc --target es6 -p 0.12 && tsc --target es6 -p 4 && tsc --target es6 -p 6",
9+
"test": "tsc -p 0.11/test && tsc -p 0.12/test && tsc -p 4/test && tsc -p 6/test"
1010
},
1111
"repository": {
1212
"type": "git",

0 commit comments

Comments
 (0)