22d9f5b21d
Novas skills instaladas: - openclaw-agent-browser v1.0.0 CLI Chromium — navegação, login, screenshots, state - skill-security-audit v1.0.0 SAST scanning, prompt injection, secrets audit - sql-toolkit v1.0.0 PostgreSQL/MySQL/SQLite — schema, query, otimização - file v1.0.0 Organização de arquivos por contexto - file-summary v1.0.0 Extração e resumo de PDFs, Word, Excel Workspace expandido: - TOOLS.md: +Browser automation, Security audit, SQL, File management - AGENTS.md: +Linux Analyst section (comandos, logs, rede, scripts) + Full-stack strategy - MEMORY.md: 16 skills indexadas, stack map, comandos Linux ref - SESSION-STATE.md: atualizado com contexto completo - lock.json: sincronizado com 16 skills instaladas
851 B
851 B
Generic Traps
useState<User>()infiereUser | undefined— manejar undefined inicialArray.filter(x => x.active)no narrowea — necesita type guard:.filter((x): x is Active => x.active)Promise.all([a(), b()])infiere tupla solo conas const<T = any>escapa elanyal resto del código<T extends object>permite arrays — usarRecord<string, unknown>para objetos<T extends string>con literal infierestring, no el literalkeyof Ten función genérica esstring | number | symbol- Arrays covariantes —
Dog[]assignable aAnimal[]pero push de Cat rompe runtime - Function params contravariantes —
(Animal) => voidNO assignable a(Dog) => void { [K in keyof T]: X }pierde modificadores — usar-?o-readonlyPartial<T>yRequired<T>son shallow — no afectan nested