add definition and test for merge-descriptor

This commit is contained in:
Zhiyuan Wang 2015-10-28 15:20:34 +08:00
parent 62eedc3121
commit f58cfb989f
3 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,35 @@
/// <reference path="merge-descriptors.d.ts"/>
import mixin = require('merge-descriptors');
function testAssertion(condition: boolean, errorMessage: string) {
if (!condition) {
throw new Error(errorMessage);
}
}
interface IMergedObject {
InSrc?: string;
name: string;
InTarget: string;
}
var src = {
InSrc: 'src',
get name(): string {
return 'from src name';
}
}
var target: IMergedObject = { name: 'my target name', InTarget: 'target' };
var target2 = mixin(target, src, true);
console.log(JSON.stringify(target));
testAssertion(target2 === target, "Returned object should refer to input [destination] object");
testAssertion(target.name === 'from src name', "[redfine]=true, source member will overwrite destination member");
testAssertion(target.InTarget === 'target', "overwrite do not affect members only in [destination]");
testAssertion(target['InSrc'] === 'src', "members from [source] must be copied to [destination]");
var nameProperty:PropertyDescriptor = Object.getOwnPropertyDescriptor(target, "name");
testAssertion(nameProperty.set === undefined, "member descriptor must be overwritten");

View File

@ -0,0 +1 @@
--noImplicitAny --module commonjs --target es5

View File

@ -0,0 +1,13 @@
// Type definitions for merge-descriptors
// Project: https://github.com/component/merge-descriptors
// Definitions by: Zhiyuan Wang <https://github.com/danny8002/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module 'merge-descriptors' {
function merge(destination: Object, source: Object): Object;
function merge(destination: Object, source: Object, redefine: boolean): Object;
export = merge;
}