type NullableKeys<T> = {
[P in keyof T as undefined extends T[P] ? P : never] : T[P]
}
// delete all properties from object (but only optional)
export const deleteObjectProperties = <T extends object>(object: T, propertiesToDelete: (keyof NullableKeys<T>)[]) => propertiesToDelete.forEach(property => delete object[property]);