export function filterNotEmpty>(obj: T): FilteredObj { const result = {} as T for (const key in obj) { const value = obj[key] if (value !== null && value !== undefined) { result[key] = value } } // TODO: type return result as FilteredObj } export type FilteredObj = { [K in keyof T as Exclude extends never ? never : K]: Exclude }