fix(types): ProductDetail.tsx — anota tipo do useProduct (-91 erros TS)#116
Conversation
…S) (F1-1.x)
Conserta 91 erros TS (TS2339, TS2322, TS2345, TS2740) em ProductDetail.tsx
causados por bug de inferência do TanStack Query 5.17 — useQuery<Product | null>
estava devolvendo NoInfer_2<TQueryFnData> em vez de Product | null no
destructuring do consumidor.
**Fix cirúrgico** (+3 linhas, -1 linha):
```diff
-const { data: product, isLoading, isError } = useProduct(id || "");
+const { data, isLoading, isError } = useProduct(id || "");
+const product: Product | null | undefined = data;
```
Mais import do type Product de @/types/product-catalog.
**Risk:** 🟢 muito baixo. Mudança 100% local, não muda runtime,
apenas type annotation. TanStack Query funciona idêntico.
**Test plan:**
- [x] Diff revisado (3 linhas)
- [x] Type Product importado da fonte correta
- [ ] CI rodando typecheck completo (1620 arquivos)
- [ ] CI verde — espera-se 1123 erros TS (era 1214, -91 = drift positivo)
**Próximos passos da Opção C:**
1. ✅ ProductDetail.tsx (91 erros) — ESTE PR
2. MockupGenerator.tsx (57)
3. usePersonalizationManager.ts (37)
4. lib/external-db/products.ts (36)
5. useSalesGoals.ts (32)
Após mergear: rodar npm run typecheck:baseline:update num PR separado
pra congelar o ganho.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughProductDetail agora importa o tipo Product e refatora o hook useProduct para destructurar explicitamente ChangesTipagem Explícita do Product
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutos 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Pull request overview
Reduz o baseline de erros de TypeScript ao corrigir a tipagem do product consumido em ProductDetail.tsx, evitando a perda de tipo no destructuring do resultado do useProduct (TanStack Query).
Changes:
- Ajusta o destructuring do
useProductpara capturardataseparadamente. - Adiciona anotação explícita
Product | null | undefinedparaproduct, destravando tipagem no restante do componente. - Inclui import de tipo
Productpara suportar a anotação.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| import { useProduct } from "@/hooks/useProducts"; | ||
| import type { Product } from "@/types/product-catalog"; |
## Problema 1: CI quebrado em main desde PR #113 Após auditoria pós-#117 descobri que **"Lint, Typecheck & Test"** tem falhado em **5 runs consecutivos em main** (desde PR #113). Causa raiz: 2 entries do .tsc-baseline.json desalinhadas com a realidade pós-#113 e #116: 1. **PR #113** moveu `src/components/quote/QuickQuoteFAB.tsx` → `quotes/`. Baseline ficou no path antigo. Gate vê isso como "+2 TS2322 novos no path `quotes/`". 2. **PR #116** consertou ProductDetail.tsx (-91 erros líquidos), mas introduziu 6 novos TS2322. Baseline fica preso em TS2322=3, vê regressão de +6. Patch cirúrgico (sem rodar tsc): - `del .counts["src/components/quote/QuickQuoteFAB.tsx"]` (path antigo) - `.counts["src/components/quotes/QuickQuoteFAB.tsx"] = {TS2322: 2}` (path novo) - `.counts["src/pages/ProductDetail.tsx"] = {TS2322: 9}` (atualiza pra realidade pós-#116) - Recalcula totalErrors via `jq` **Resultado: baseline 1214 → 1132 erros** (alinhado com o tsc real que reporta 1130, +2 de drift positivo aceito). ## Problema 2: gen-edges-readme.mjs não roda standalone PR #117 prometeu reproduzibilidade via `node scripts/gen-edges-readme.mjs > supabase/functions/README.md`, mas o script tinha 2 `readFileSync('/tmp/edge-*.txt')` deixados da geração inicial — quebrava se /tmp não tivesse os arquivos. Reescrito standalone: - `readdirSync(supabase/functions)` em vez de `/tmp/edge-dirs.txt` - `execSync(grep -rE ...)` em vez de `/tmp/edge-callers.txt` - Validado: `node scripts/gen-edges-readme.mjs` produz 196 linhas idênticas ao README atual ## Risk 🟢 Zero. Baseline mais rigoroso (gate fica menor, não maior). Script mais portável. ## Test plan - [x] `jq '.totalErrors' .tsc-baseline.json` = 1132 (era 1214) - [x] `jq '.counts | has("src/components/quote/QuickQuoteFAB.tsx")'` = false - [x] `node scripts/gen-edges-readme.mjs` roda standalone (sem /tmp) - [ ] CI verde (este é o teste real) - [ ] CodeRabbit OK
Plano
Conserta 91 erros TS em
src/pages/ProductDetail.tsx(arquivo com mais erros do baseline — 7.5% do total). Cirúrgico: +3 linhas, -1.Causa raiz
Bug de inferência do TanStack Query v5.17:
useQuery<Product | null>perdia tipo no destructuring, devolviaNoInfer_2<TQueryFnData>.Fix
Annotation explícita força tipo. Resolve 91 erros num patch.
Distribuição
Risk: 🟢 muito baixo
Mudança 100% local. Sem efeito runtime. Drift positivo (1214→~1123).
Sequência Opção C (-253 erros = -21% baseline TS)
Após mergear:
npm run typecheck:baseline:updateem PR à parte.Summary by CodeRabbit
Notas de Lançamento
Observação: Esta versão contém apenas otimizações internas sem mudanças visíveis na funcionalidade do aplicativo.