diff --git a/types/ungap__weakmap/index.d.ts b/types/ungap__weakmap/index.d.ts new file mode 100644 index 0000000000..4669d8cbdb --- /dev/null +++ b/types/ungap__weakmap/index.d.ts @@ -0,0 +1,20 @@ +// Type definitions for @ungap/weakmap 0.1 +// Project: https://github.com/ungap/weakmap#readme +// Definitions by: ExE Boss +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/** + * Based on definitions from `lib.es2015.collection` and `lib.es2015.iterable`. + */ +declare class WeakMap { + constructor(entries?: ReadonlyArray<[K, V]> | null); + constructor(iterable: Iterable<[K, V]> | null | undefined); + + delete(key: K): boolean; + get(key: K): V | undefined; + has(key: K): boolean; + set(key: K, value: V): this; +} + +export = WeakMap; +export as namespace WeakMap; diff --git a/types/ungap__weakmap/test/weakmap.cjs.test.ts b/types/ungap__weakmap/test/weakmap.cjs.test.ts new file mode 100644 index 0000000000..61461b9c70 --- /dev/null +++ b/types/ungap__weakmap/test/weakmap.cjs.test.ts @@ -0,0 +1,22 @@ +import WeakMap = require('ungap__weakmap'); + +WeakMap; // $ExpectType typeof WeakMap + +// $ExpectType WeakMap +const weakMap = new WeakMap(); + +weakMap.delete; // $ExpectType (key: object) => boolean +weakMap.has; // $ExpectType (key: object) => boolean +weakMap.get; // $ExpectType (key: object) => any +weakMap.set; // $ExpectType (key: object, value: any) => WeakMap + +function foo(...args: Array<[K, V]>): WeakMap { + const weakMap = new WeakMap(arguments as Iterable<[K, V]>); + + weakMap.delete; // $ExpectType (key: K) => boolean + weakMap.has; // $ExpectType (key: K) => boolean + weakMap.get; // $ExpectType (key: K) => V | undefined + weakMap.set; // $ExpectType (key: K, value: V) => WeakMap + + return weakMap; +} diff --git a/types/ungap__weakmap/tsconfig.json b/types/ungap__weakmap/tsconfig.json new file mode 100644 index 0000000000..14563bc8e6 --- /dev/null +++ b/types/ungap__weakmap/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": ["es5", "es2015.iterable"], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": ["../"], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "test/weakmap.cjs.test.ts" + ] +} diff --git a/types/ungap__weakmap/tslint.json b/types/ungap__weakmap/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/ungap__weakmap/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }