/** Makes selected props from a record non optional */ export type Ensure = Omit & { [EK in K]-?: NonNullable; }; /** Makes selected props from a record optional */ export type Optional = Pick, K> & Omit; /** Get the union type of all the values in an object, array or array-like type `T` */ export type ValuesType | ArrayLike | Record> = T extends ReadonlyArray ? T[number] : T extends ArrayLike ? T[number] : T extends object ? T[keyof T] : never;