mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
/// <reference types="node" />
|
|
import * as assert from 'assert';
|
|
import * as extend from 'extend';
|
|
|
|
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 = extend(objectBase, objectOne);
|
|
assert(extended.test === 'one');
|
|
assert(extended.iamone);
|
|
|
|
type MoreExtendedType = typeof objectBase & typeof objectOne & typeof objectTwo;
|
|
const moreExtended: MoreExtendedType = extend(objectBase, objectOne, objectTwo);
|
|
assert(moreExtended.test === 2);
|
|
assert(moreExtended.iamone);
|
|
assert(moreExtended.iamtwo);
|
|
|
|
type DeepExtendedType = typeof objectBase & typeof objectOne &
|
|
typeof objectTwo & typeof objectThree;
|
|
const deepExtended = extend(true, objectBase, objectOne, objectTwo, objectThree);
|
|
assert(deepExtended.iamone);
|
|
assert(deepExtended.iamtwo);
|
|
assert(deepExtended.iamthree);
|
|
assert(deepExtended.depth.innerType === 'deep');
|