Loops

Remove Explicit any Types

Finds every any type in your TypeScript code and replaces it with a real type.

Anyone whose codebase has any scattered through it from fast AI-written TypeScript.

The problem

Every any is a place where type checking is silently turned off. Finding them all by searching the codebase and deciding what the real type should be, one at a time, is slow and easy to give up on halfway through.

1. Work list

The command that lists every item. No AI involved.

npx eslint . --no-eslintrc --parser @typescript-eslint/parser --plugin @typescript-eslint --rule '{"@typescript-eslint/no-explicit-any":"error"}' --format json | jq -r '.[] | select(.errorCount>0) | .filePath'

2. Unit of work

One item is one file that contains at least one explicit any type.

3. The check

The checker runs the same ESLint rule scoped to that one file. Exit code 0 means no any remains. Exit code 1 means one is still there, and the checker prints the line and column back to the AI.

4. Stopping rule

Each file gets up to 3 attempts, then quarantine, ending when the work list is empty.

What this cannot catch

This proves the word any is gone, not that the replacement type is correct. A wrong but specific type can still pass this check.

Build it

Install justloopit, then describe this task in your AI coding tool. It will ask about your project, then write the checker, the runner, and the spec.

Install

Build a loop