This commit upgrades TypeScript to the latest version 5.3 and introduces `verbatimModuleSyntax` in line with the official Vue guide recommendatinos (vuejs/docs#2592). By enforcing `import type` for type-only imports, this commit improves code clarity and supports tooling optimization, ensuring imports are only bundled when necessary for runtime. Changes: - Bump TypeScript to 5.3.3 across the project. - Adjust import statements to utilize `import type` where applicable, promoting cleaner and more efficient code.
28 lines
641 B
TypeScript
28 lines
641 B
TypeScript
import { PlatformTimer } from './PlatformTimer';
|
|
import type { TimeoutType, Timer } from './Timer';
|
|
|
|
export function batchedDebounce<T>(
|
|
callback: (batches: readonly T[]) => void,
|
|
waitInMs: number,
|
|
timer: Timer = PlatformTimer,
|
|
): (arg: T) => void {
|
|
let lastTimeoutId: TimeoutType | undefined;
|
|
let batches: Array<T> = [];
|
|
|
|
return (arg: T) => {
|
|
batches.push(arg);
|
|
|
|
const later = () => {
|
|
callback(batches);
|
|
batches = [];
|
|
lastTimeoutId = undefined;
|
|
};
|
|
|
|
if (lastTimeoutId !== undefined) {
|
|
timer.clearTimeout(lastTimeoutId);
|
|
}
|
|
|
|
lastTimeoutId = timer.setTimeout(later, waitInMs);
|
|
};
|
|
}
|