TypeScript implementation of debounce
compare two objects in a shallow way to check if they differ with support white list of properties