# Generic Traps - `useState()` infiere `User | undefined` — manejar undefined inicial - `Array.filter(x => x.active)` no narrowea — necesita type guard: `.filter((x): x is Active => x.active)` - `Promise.all([a(), b()])` infiere tupla solo con `as const` - `` escapa el `any` al resto del código - `` permite arrays — usar `Record` para objetos - `` con literal infiere `string`, no el literal - `keyof T` en función genérica es `string | number | symbol` - Arrays covariantes — `Dog[]` assignable a `Animal[]` pero push de Cat rompe runtime - Function params contravariantes — `(Animal) => void` NO assignable a `(Dog) => void` - `{ [K in keyof T]: X }` pierde modificadores — usar `-?` o `-readonly` - `Partial` y `Required` son shallow — no afectan nested