40 lines
1.4 KiB
Plaintext
40 lines
1.4 KiB
Plaintext
PROBLÈME TYPESCRIPT - Next.js 16.1.1
|
|
|
|
Contexte :
|
|
- Next.js 16.1.1 (App Router), TypeScript strict mode
|
|
- Fichier : components/calendar/calendar-widget.tsx
|
|
- Erreur : "Block-scoped variable 'status' used before its declaration" ligne 33
|
|
|
|
Code problématique :
|
|
```typescript
|
|
export function CalendarWidget() {
|
|
const { data: session, status } = useSession(); // Ligne 25 - déclaration
|
|
const [events, setEvents] = useState<Event[]>([]);
|
|
// ... autres hooks ...
|
|
|
|
useEffect(() => {
|
|
console.log("Status:", status); // Ligne 33 - ERREUR ICI
|
|
// ...
|
|
}, [session, status, triggerNotification]);
|
|
}
|
|
```
|
|
|
|
Constats :
|
|
✅ Même structure que components/email.tsx qui compile sans erreur
|
|
✅ Pas de conflit de noms (une seule déclaration de 'status')
|
|
✅ Caches nettoyés (.next, node_modules/.cache)
|
|
✅ Fichier vérifié sur disque - code correct
|
|
✅ Aucune autre référence à sessionResult/status trouvée
|
|
|
|
Tentatives échouées :
|
|
1. Déclarer status dans useEffect → erreur avec sessionHook
|
|
2. Séparer destructuration → erreur avec sessionResult
|
|
3. Changer ordre des hooks → même erreur
|
|
4. Copier structure exacte de email.tsx → même erreur
|
|
|
|
Question :
|
|
Pourquoi TypeScript signale "used before declaration" alors que status est déclaré ligne 25 et utilisé ligne 33, et que la même structure fonctionne dans email.tsx ?
|
|
|
|
Solution recherchée :
|
|
Comment résoudre cette erreur TypeScript sans compromettre la structure du code qui fonctionne ailleurs ?
|