[merge-deep] Add types (#46907)

This commit is contained in:
Emily Marigold Klassen 2020-08-27 17:06:36 -07:00 committed by GitHub
parent e9a148ade9
commit 4612109a7d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 80 additions and 0 deletions

13
types/merge-deep/index.d.ts vendored Normal file
View File

@ -0,0 +1,13 @@
// Type definitions for merge-deep 3.0
// Project: https://github.com/jonschlinkert/merge-deep
// Definitions by: Emily Marigold Klassen <https://github.com/forivall>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
export = mergeDeep;
/** Recursively merge values in a javascript object. */
declare function mergeDeep<T, U>(orig: T, objects: U): T & U;
declare function mergeDeep<T, U, V>(orig: T, objects1: U, objects2: V): T & U & V;
declare function mergeDeep<T, U, V, W>(orig: T, objects1: U, objects2: V, objects3: W): T & U & V & W;
declare function mergeDeep<T, U, V, W, X>(orig: T, objects1: U, objects2: V, objects3: W, objects4: X): T & U & V & W & X;
declare function mergeDeep(target: any, ...sources: any[]): any;

View File

@ -0,0 +1,43 @@
import merge = require('merge-deep');
merge({a: {b: {c: 'c', d: 'd'}}}, {a: {b: {e: 'e', f: 'f'}}});
const objectBase = {
test: 'base'
};
const objectOne = {
test: 'one',
iamone: true
};
const objectTwo = {
test: 2,
iamtwo: true
};
const objectThree = {
iamthree: true,
depth: {
innerType: 'deep'
}
};
type ExtendedType = typeof objectBase & typeof objectOne;
const extended: ExtendedType = merge(objectBase, objectOne);
extended.test === 'one';
extended.iamone;
type MoreExtendedType = typeof objectBase & typeof objectOne & typeof objectTwo;
const moreExtended: MoreExtendedType = merge(objectBase, objectOne, objectTwo);
moreExtended.test === 2;
moreExtended.iamone;
moreExtended.iamtwo;
type DeepExtendedType = typeof objectBase & typeof objectOne &
typeof objectTwo & typeof objectThree;
const deepExtended: DeepExtendedType = merge(objectBase, objectOne, objectTwo, objectThree);
deepExtended.iamone;
deepExtended.iamtwo;
deepExtended.iamthree;
deepExtended.depth.innerType === 'deep';

View File

@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"merge-deep-tests.ts"
]
}

View File

@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }