fix(runtime): 解决运行时错误并优化自动登录功能

-修复了 Taro 应用启动时的运行时错误
- 解决了 TypeScript 类型错误和导入问题
- 优化了自动登录逻辑,集成到 useUser Hook 中
- 从 app.ts 中移除了重复的自动登录代码
- 在 Header.tsx 中添加了正确的 API 调用
This commit is contained in:
2025-09-05 14:17:13 +08:00
parent 16db2c4eac
commit 1df0f7735c
6 changed files with 374 additions and 47 deletions

95
TYPESCRIPT_FIXES.md Normal file
View File

@@ -0,0 +1,95 @@
# TypeScript 类型错误修复
## 问题描述
`src/user/profile/profile.tsx` 文件中遇到了 TypeScript 类型错误:
- `TS7031: Binding element 'detail' implicitly has an 'any' type.`
## 修复内容
### 1. 添加类型定义
为常用的事件类型创建了明确的接口定义:
```typescript
// 类型定义
interface ChooseAvatarEvent {
detail: {
avatarUrl: string;
};
}
interface InputEvent {
detail: {
value: string;
};
}
```
### 2. 修复函数参数类型
#### 修复前:
```typescript
const uploadAvatar = ({detail}) => {
// TS7031 错误detail 隐式具有 any 类型
}
const submitSucceed = (values: any) => {
// 使用 any 类型
}
const submitFailed = (error: any) => {
// 使用 any 类型
}
onInput={(e) => getWxNickname(e.detail.value)}
// e 参数隐式具有 any 类型
```
#### 修复后:
```typescript
const uploadAvatar = ({detail}: ChooseAvatarEvent) => {
// 明确的类型定义
}
const submitSucceed = (values: User) => {
// 使用具体的 User 类型
}
const submitFailed = (error: unknown) => {
// 使用 unknown 类型替代 any
}
onInput={(e: InputEvent) => getWxNickname(e.detail.value)}
// 明确的事件类型
```
## 修复的具体位置
1. **第86行** - `uploadAvatar` 函数参数类型
2. **第65行** - `submitSucceed` 函数参数类型
3. **第82行** - `submitFailed` 函数参数类型
4. **第176行** - `onInput` 事件处理器参数类型
## 类型安全改进
### 优势:
1. **编译时错误检查**TypeScript 可以在编译时发现类型错误
2. **更好的 IDE 支持**:自动补全和类型提示
3. **代码可读性**:明确的类型定义让代码意图更清晰
4. **重构安全性**:类型检查帮助避免重构时的错误
### 最佳实践:
1. **避免使用 `any`**:尽量使用具体的类型定义
2. **使用 `unknown` 替代 `any`**:当类型不确定时,`unknown` 更安全
3. **创建接口定义**:为复杂的对象结构创建接口
4. **事件类型定义**:为事件处理器创建明确的类型定义
## 验证修复
修复后TypeScript 编译器应该不再报告类型错误,并且:
- IDE 会提供更好的自动补全
- 类型检查会捕获潜在的运行时错误
- 代码更容易维护和理解
## 相关文件
- `src/user/profile/profile.tsx` - 主要修复文件
- `src/api/system/user/model.ts` - User 类型定义
- `src/api/system/dict-data/model.ts` - DictData 类型定义