cache.d.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /**
  2. * @description 双栈实现撤销恢复
  3. * @author fangzhicong
  4. */
  5. import { CeilStack } from './stack';
  6. export default class Cache<T> {
  7. protected maxSize: number;
  8. /**
  9. * 正常操作(用户输入、js代码修改内容、恢复操作)产生的缓存
  10. */
  11. protected data: CeilStack<T>;
  12. /**
  13. * 撤销操作产生的缓存(恢复操作时需要这些数据)
  14. */
  15. protected revokeData: CeilStack<T>;
  16. /**
  17. * 上一步操作是否为 撤销/恢复
  18. */
  19. protected isRe: boolean;
  20. constructor(maxSize: number);
  21. /**
  22. * 返回当前栈中的数据长度。格式为:[正常的数据的条数,被撤销的数据的条数]
  23. */
  24. get size(): number[];
  25. /**
  26. * 重设数据缓存器的缓存长度(第一次有效)
  27. */
  28. resetMaxSize(maxSize: number): void;
  29. /**
  30. * 保存数据
  31. */
  32. save(data: T): this;
  33. /**
  34. * 撤销
  35. * @param fn 撤销时,如果有数据,执行的回调函数
  36. */
  37. revoke(fn: (data: T) => void): boolean;
  38. /**
  39. * 恢复
  40. * @param fn 恢复时,如果有数据,执行的回调函数
  41. */
  42. restore(fn: (data: T) => void): boolean;
  43. }