Description

extend is a very common pattern in JavaScript where you take two objects and create a new one that has the features of both these objects. An Intersection Type allows you to use this pattern in a safe way.

Syntax

function extend<T, U>(first: T, second: U): T & U {
  return { ...first, ...second };
}
 
const x = extend({ a: "hello" }, { b: 42 });
 
// x now has both `a` and `b`
const a = x.a;
const b = x.b;