vue-componentes/.agent/rules/typescript-sem-any.global.md

2.2 KiB

trigger description globs alwaysApply
always_on Proíbe uso de any, casts inseguros e padroniza uso de enums em código TypeScript
**/*.ts
**/*.tsx
**/*.vue
true

Regras obrigatórias para TypeScript neste projeto:

  • Nunca usar any.
  • Nunca usar as any.
  • Nunca contornar erro de tipagem com cast forçado.
  • Quando o tipo não for conhecido, usar unknown.
  • Antes de acessar valores unknown, fazer narrowing com:
    • typeof
    • in
    • Array.isArray
    • type guards
    • schemas de validação como Zod
  • Preferir:
    • generics
    • union types
    • Record<string, unknown>
    • Partial<T>
    • Pick<T, K>
    • PropType<T> em Vue
    • tipos derivados de funções existentes
  • Se faltar tipo, o agente deve:
    1. procurar tipos já existentes no projeto;
    2. criar um tipo/interface local explícita;
    3. inferir a partir do contexto sempre que possível;
    4. deixar um TODO de tipagem explícito, mas sem usar any.

Regras obrigatórias para uso de enums:

  • Quando um valor estiver associado a um enum, é obrigatório utilizar o enum, nunca strings literais.
  • O acesso deve seguir o padrão: <NomeEnum>.VALOR.

Também é proibido, quando existir enum correspondente:

  • utilizar strings literais no lugar do enum (ex: "ativo", "inativo", "automatica", "criar");
  • utilizar cast para forçar compatibilidade com enum (ex: "ativo" as StatusConta).

Proibido gerar código que apenas "faça compilar" usando:

  • as any
  • : any
  • [] as any
  • { } as any
  • dupla coerção como as unknown as any

Em casos excepcionais, preferir:

  • as unknown as TipoEspecifico somente se houver justificativa clara e comentário técnico.

Diretriz para o agente:

Se encontrar uma string que represente um valor de domínio do sistema, o agente deve:

  1. procurar se já existe um enum correspondente no projeto;
  2. usar o enum existente;
  3. se não existir, propor a criação de um enum explícito, em vez de manter strings soltas.

Referências

  • Skill: .agent/skills/diagnosticar-erros-build/SKILL.md (quando erros de tipagem causam falhas de build em cascata)
  • Workflow: .agent/workflows/documentar-codigo.global.md (padrão de documentação para casts temporários)