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
merge obj1 obj2
obj2
obj1
let keys: t(_) => array(string);