// @ts-nocheck
/**
 * 防抖函數，通過延遲壹定時間來限制函數的執行頻率。
 * @param fn 要防抖的函數。
 * @param wait 觸發防抖的等待時間，單位為毫秒。
 * @returns 防抖函數。
 */
export function debounce<A extends any>(fn : (args: A)=> void, wait = 300): (args: A)=> void {
	let timer = -1
	
	return (args: A) => {
		if (timer >-1) {clearTimeout(timer)};
		
		timer = setTimeout(()=>{
			fn(args)
		}, wait)
	}
};



// 示例
// 定義壹個函數
// function saveData(data: string) {
//   // 模擬保存數據的操作
//   console.log(`Saving data: ${data}`);
// }

// // 創建壹個防抖函數，延遲 500 毫秒後調用 saveData 函數
// const debouncedSaveData = debounce(saveData, 500);

// // 連續調用防抖函數
// debouncedSaveData('Data 1'); // 不會立即調用 saveData 函數
// debouncedSaveData('Data 2'); // 不會立即調用 saveData 函數

// 在 500 毫秒後，只會調用壹次 saveData 函數，輸出結果為 "Saving data: Data 2"