export function isEmptyObject(obj: any) { return obj && Object.keys(obj).length === 0 && obj.constructor === Object; } export function getYear(date = new Date()) { if (!(date instanceof Date)) { throw new TypeError('Invalid date object'); } return date.getFullYear(); } export function debounce any>(fn: T, delay = 300) { let timer: ReturnType; return (...args: Parameters) => { if (timer) clearTimeout(timer); timer = setTimeout(() => { fn(...args); }, delay); }; }