/** * Returns first non-nil (not undefined, not null) value from given arguments. * * @param {...*} args - values * @example coalesce(null, undefined, void 0, 5); // returns 5 * @example coalesce(4, null, 6, undefined); // returns 4 * @example coalesce(undefined); // returns null * @example coalesce(); // returns null * @returns {*|null} first non-nil value or null */ const coalesce = (...args: T[]): NonNullable | null => { for (let i = 0; i < args.length; i++) { const item = args[i]; if (item != null) { // @ts-expect-error: TypeScript complains for no reason, I could use `as NonNullable` but nope. return item; } } return null; }; export { coalesce };