cloner - new typings - tested (#25406)

This commit is contained in:
Mathew Rumsey
2018-05-01 09:19:57 -07:00
committed by Andy
parent cc3af3a4a9
commit 79c02230b2
4 changed files with 112 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
import cloner = require("cloner");
interface A {
test: string;
nest: {
test: string;
num: number;
};
}
interface B {
somethingElse: string;
nest: {
somethingElse: string;
notNaN: number;
};
}
let aO: A;
let aN: A;
let bO: B;
let bN: B;
aO = {
test: "test",
nest: {
test: "nestTest",
num: 1
}
};
bO = {
somethingElse: "se",
nest: {
somethingElse: "nestSe",
notNaN: 0
}
};
aN = cloner.deep.copy(aO);
bN = cloner.shallow.copy(bO);
aN = cloner.deep.merge(aO, bO);
bN = cloner.shallow.merge(aO, bO);
+45
View File
@@ -0,0 +1,45 @@
// Type definitions for cloner 0.4
// Project: https://github.com/WebReflection/cloner
// Definitions by: matrumz <https://github.com/matrumz>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/**
* Deep-style methods that will perform operations by value, instead of reference.
*/
export namespace deep {
/**
* Will loop over all own keys and deeply copy (copy by value) them to a new object.
*
* Preserves inheritance and is recursion aware, meaning it shouldn't fail with recursive properties.
* @param [obj] The object to copy.
*/
function copy<T>(obj: T): T;
/**
* Preserves what's already in the target and merges all own keys found in one or more passed sources.
*
* Properties are merged by value.
* @param [target] Destination object for merged properties.
* @param [sources] Source object(s) for properties to merge.
*/
function merge(target: any, ...sources: any[]): any;
}
/**
* Shallow-style methods that will perform operations by reference, instead of value.
*/
export namespace shallow {
/**
* Will loop over all own keys and shallow copy (copy by reference) them to a new object.
*
* Preserves inheritance and is recursion aware, meaning it shouldn't fail with recursive properties.
* @param [obj] The object to copy.
*/
function copy<T>(obj: T): T;
/**
* Preserves what's already in the target and merges all own keys found in one or more passed sources.
*
* Properties are merged by reference.
* @param [target] Destination object for merged properties.
* @param [sources] Source object(s) for properties to merge.
*/
function merge(target: any, ...sources: any[]): any;
}
+23
View File
@@ -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",
"cloner-tests.ts"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }