From a11c01b085e76ab8bac1d11aea3ad44dbb29b4d6 Mon Sep 17 00:00:00 2001 From: Peter Safranek Date: Sun, 20 May 2018 01:03:28 -0700 Subject: [PATCH] Add typings for just-extend. --- types/just-extend/index.d.ts | 11 ++++++ types/just-extend/just-extend-tests.ts | 52 ++++++++++++++++++++++++++ types/just-extend/tsconfig.json | 23 ++++++++++++ types/just-extend/tslint.json | 1 + 4 files changed, 87 insertions(+) create mode 100644 types/just-extend/index.d.ts create mode 100644 types/just-extend/just-extend-tests.ts create mode 100644 types/just-extend/tsconfig.json create mode 100644 types/just-extend/tslint.json diff --git a/types/just-extend/index.d.ts b/types/just-extend/index.d.ts new file mode 100644 index 0000000000..7aceac4b35 --- /dev/null +++ b/types/just-extend/index.d.ts @@ -0,0 +1,11 @@ +// Type definitions for just-extend 1.1 +// Project: https://github.com/angus-c/just#readme +// Definitions by: Peter Safranek +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +declare function extend(obj1: object, ...objn: any[]): object; + +declare function extend(deep: boolean, obj1: object, ...objn: any[]): object; + +export = extend; diff --git a/types/just-extend/just-extend-tests.ts b/types/just-extend/just-extend-tests.ts new file mode 100644 index 0000000000..74d5101430 --- /dev/null +++ b/types/just-extend/just-extend-tests.ts @@ -0,0 +1,52 @@ +import extend = require("just-extend"); + +// Pass single `object`. +extend({}); // $ExpectType object +extend([]); // $ExpectType object +extend(() => {}); // $ExpectType object + +// Pass single `object`, then `any`. +extend({}, 0); // $ExpectType object +extend({}, ""); // $ExpectType object +extend({}, false); // $ExpectType object +extend({}, null); // $ExpectType object +extend({}, undefined); // $ExpectType object +extend({}, {}); // $ExpectType object +extend({}, []); // $ExpectType object +extend({}, () => {}); // $ExpectType object + +// Pass variadic args. +extend({}, 0, "", false, null, undefined, {}, [], () => {}); // $ExpectType object + +// Pass `boolean`, then single `object`. +extend(true, {}); // $ExpectType object +extend(true, []); // $ExpectType object +extend(true, () => {}); // $ExpectType object + +// Pass `boolean`, single `object`, then `any`. +extend(true, {}, 0); // $ExpectType object +extend(true, {}, ""); // $ExpectType object +extend(true, {}, false); // $ExpectType object +extend(true, {}, null); // $ExpectType object +extend(true, {}, undefined); // $ExpectType object +extend(true, {}, {}); // $ExpectType object +extend(true, {}, []); // $ExpectType object +extend(true, {}, () => {}); // $ExpectType object + +// Pass `boolean`, then variadic args. +extend(true, {}, 0, "", false, null, undefined, {}, [], () => {}); // $ExpectType object + +// Incorrect extendee `object`. +extend(); // $ExpectError +extend(0); // $ExpectError +extend(""); // $ExpectError +extend(false); // $ExpectError +extend(null); // $ExpectError +extend(undefined); // $ExpectError + +// Pass `boolean` with incorrect extendee `object`. +extend(true, 0); // $ExpectError +extend(true, ""); // $ExpectError +extend(true, false); // $ExpectError +extend(true, null); // $ExpectError +extend(true, undefined); // $ExpectError diff --git a/types/just-extend/tsconfig.json b/types/just-extend/tsconfig.json new file mode 100644 index 0000000000..deec8db29c --- /dev/null +++ b/types/just-extend/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "just-extend-tests.ts" + ] +} diff --git a/types/just-extend/tslint.json b/types/just-extend/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/just-extend/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }