Module Js.Obj

let empty: unit => t({.. });
let assign: t({.. }) => t({.. }) => t({.. });
let merge: t({.. }) => t({.. }) => t({.. });

merge obj1 obj2 assigns the properties in obj2 to a copy of obj1. The function returns a new object, and both arguments are not mutated

let keys: t(_) => array(string);