remove deprecated api

This commit is contained in:
Timi
2026-08-07 10:46:14 +08:00
parent efea624376
commit f0ba55fe25
18 changed files with 194 additions and 306 deletions
+38
View File
@@ -0,0 +1,38 @@
# 2026-08-06 工作日志
## TypeScript enum 重构(全量消除 enum
用户决定改用纯联合类型,自行修改依赖方。全项目 18 处 enum 分两类处理:
### 改为纯联合类型(字符串枚举,仅作类型用)
- `Attachment.ts` AttachmentBizType、`Template.ts` TemplateBizType
- `Model.ts` RunEnv / OrderType / ImageTypeImageType 值为 ir-auto 等,与 key 不同)
- `Comment.ts` CommentReplyBizType / CommentBizType
- `User.ts` UserAttachType(在 UserAPI.ts 有值引用,已同步改为字符串字面量,import 改 type-only
### 改为 const 对象 + 派生类型(数字枚举或运行时值引用,纯联合不可行)
- `User.ts` LoginType、`Article.ts` ArticleType / ArticleAttachType / ArticleSoftwareDownloadType / ArticleSoftwareRuntime(数字枚举,保留数值避免破坏数据契约)
- `deviceStore.ts` Breakpoints(数字,用于比较 width < Breakpoints.SM
- `IOSize.ts` Unit(用 Object.keys/values + Unit.KB 值引用)
- `Prismjs.ts` PrismjsType / PrismjsViewerMap 键值引用)
- `directives/Popup.ts` PopupTypeswitch case 值引用)
### 结论
- `vue-tsc --noEmit` 通过(exit 0
- ESLint 因项目缺 eslint.config.js(仍用旧 .eslintrcESLint9 不支持)无法运行,属项目既有配置问题
- 判断依据:纯联合无运行时存在,凡 `Object.keys(enum)``map.set(Enum.X)``case Enum.X``Enum.X` 作值的都无法纯联合,必须 const 对象
## Storage.ts 设计修正
- `getString` 返回 `string | null`(对齐 `localStorage.getItem` 契约),不再 throw
- `getJSON` 返回 `unknown`,键不存在时返回 `null`,值无法解析时才抛错
- `getObject` 返回 `T | null`,不再 throw(修正原 JSDoc 已写 `T | undefined` 但代码 throw 的矛盾)
- `is` / `not` 键不存在时自然返回 `false` / `true`,不再崩
- `has` 去掉死代码 `!== undefined`localStorage.getItem 只返回 string|null),单次查询
- `vue-tsc --noEmit` 通过
## Toolkit.ts debounce 修复
- **Bug 修复**`cancel()` 原先只清定时器不重置 `leading` 状态,导致立即模式下 cancel 后首次调用丢失 leading 触发
- **类型修复**:返回类型从 `T & { cancel(): void }` 改为 `((...args: Parameters<T>) => void) & { cancel(): void }`,防抖函数实际返回 void 而非 T 的返回值
- 补充完整 JSDoc(含 `@example`),说明立即模式(leading + trailing)和延迟模式(trailing only)的行为差异
- 状态变量 `immediate``leading`,参数 `defaultImmediate``immediate`,语义更清晰
- 去掉 `eslint-disable-next-line` 和多余注释
- `vue-tsc --noEmit` 通过