# 🔧 TypeScript 警告修复

## 问题描述

在`useShopInfo.ts`中出现TypeScript警告：
```
TS6133: forceRefresh is declared but its value is never read.
```

## 问题分析

在`fetchShopInfo`函数中，`forceRefresh`参数被声明但从未使用：

```typescript
// 问题代码 ❌
const fetchShopInfo = useCallback(async (forceRefresh = false) => {
  // forceRefresh参数在函数体中从未被使用
  try {
    setLoading(true);
    setError(null);
    
    const data = await getShopInfo(); // 总是从服务器获取
    // ...
  }
}, [saveShopInfoToStorage]);
```

## 修复方案

### 选择的方案：移除未使用的参数

```typescript
// 修复后 ✅
const fetchShopInfo = useCallback(async () => {
  try {
    setLoading(true);
    setError(null);
    
    const data = await getShopInfo();
    setShopInfo(data);
    saveShopInfoToStorage(data);
    
    return data;
  } catch (error) {
    // 错误处理...
  } finally {
    setLoading(false);
  }
}, [saveShopInfoToStorage]);
```

## 为什么选择移除参数

### 1. **当前实现逻辑**
- `fetchShopInfo`总是从服务器获取最新数据
- 缓存逻辑在`useEffect`初始化时处理
- 不需要强制刷新参数

### 2. **代码简化**
- 移除未使用的参数使代码更清晰
- 避免TypeScript警告
- 减少不必要的复杂性

### 3. **功能完整性**
- `refreshShopInfo`方法专门用于强制刷新
- `fetchShopInfo`专注于获取数据
- 职责分离更清晰

## 替代方案（未采用）

如果需要实现`forceRefresh`逻辑，可以这样做：

```typescript
// 替代方案：实现forceRefresh逻辑
const fetchShopInfo = useCallback(async (forceRefresh = false) => {
  // 如果不是强制刷新，先检查缓存
  if (!forceRefresh) {
    const hasCache = loadShopInfoFromStorage();
    if (hasCache) {
      return shopInfo;
    }
  }
  
  try {
    setLoading(true);
    setError(null);
    
    const data = await getShopInfo();
    setShopInfo(data);
    saveShopInfoToStorage(data);
    
    return data;
  } catch (error) {
    // 错误处理...
  } finally {
    setLoading(false);
  }
}, [saveShopInfoToStorage, loadShopInfoFromStorage, shopInfo]);
```

**为什么不采用这个方案：**
- 会重新引入循环依赖问题（依赖`shopInfo`）
- 缓存逻辑已在初始化时处理
- 增加不必要的复杂性

## 修复效果

### 修复前 ❌
```
⚠️  TS6133: forceRefresh is declared but its value is never read.
🔧 未使用的参数造成代码混淆
📝 代码意图不明确
```

### 修复后 ✅
```
✅ 无TypeScript警告
🔧 代码简洁明确
📝 函数职责清晰
```

## 相关方法说明

### `fetchShopInfo()`
- **用途**：从服务器获取商店信息
- **场景**：初始化时调用
- **特点**：总是获取最新数据

### `refreshShopInfo()`
- **用途**：强制刷新商店信息
- **场景**：用户手动刷新时调用
- **特点**：清除缓存，重新获取

### 使用示例

```typescript
const { fetchShopInfo, refreshShopInfo } = useShopInfo();

// 初始化获取（内部自动调用）
// fetchShopInfo();

// 用户手动刷新
const handleRefresh = async () => {
  await refreshShopInfo();
};
```

## 总结

通过移除未使用的`forceRefresh`参数：

- ✅ **消除TypeScript警告**
- ✅ **简化代码逻辑**
- ✅ **保持功能完整**
- ✅ **避免循环依赖**

这个修复使代码更加清晰和可维护，同时保持了所有原有功能。
