DefinitelyTyped/types/extend/extend-tests.ts

42 lines
966 B
TypeScript

import extend = require('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);
extended.test === 'one';
extended.iamone;
type MoreExtendedType = typeof objectBase & typeof objectOne & typeof objectTwo;
const moreExtended: MoreExtendedType = extend(objectBase, objectOne, objectTwo);
moreExtended.test === 2;
moreExtended.iamone;
moreExtended.iamtwo;
type DeepExtendedType = typeof objectBase & typeof objectOne &
typeof objectTwo & typeof objectThree;
const deepExtended = extend(true, objectBase, objectOne, objectTwo, objectThree);
deepExtended.iamone;
deepExtended.iamtwo;
deepExtended.iamthree;
deepExtended.depth.innerType === 'deep';