feat(dealer): 新增银行卡管理功能
- 添加银行卡管理页面和相关API - 实现银行卡列表展示、添加、编辑和删除功能 - 优化提现页面,支持选择银行卡进行提现 - 新增 FixedButton 组件用于底部固定按钮
This commit is contained in:
95
docs/TYPESCRIPT_FIXES.md
Normal file
95
docs/TYPESCRIPT_FIXES.md
Normal 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 类型定义
|
||||
Reference in New Issue
Block a user