Skip to content

chore: upgrade typescript-eslint to v8 - #390

Merged
ppeeou merged 1 commit into
mainfrom
chore/typescript-eslint-v8
Aug 8, 2026
Merged

ppeeou merged 1 commit into
mainfrom
chore/typescript-eslint-v8

Conversation

@ppeeou

@ppeeou ppeeou commented Aug 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

@typescript-eslint 5.60 declares support for TypeScript >=3.3.1 <5.1.0 while the repo now runs 5.9, and .eslintrc set warnOnUnsupportedTypeScriptVersion: false, silencing the only signal of the mismatch. Any TS 5.2+ syntax (using, const type parameters) would crash the v5 parser in CI with no explanation. This also unblocks planned type-inference work that needs modern syntax.

  • @typescript-eslint/parser + eslint-plugin 5.60 → 8.66, eslint 8.43 → 8.57 (legacy .eslintrc format still supported; no flat-config migration needed).
  • Removed the warnOnUnsupportedTypeScriptVersion suppression.

Fallout from v8's stricter recommended set, all addressed:

  • type-check/: v8's no-unused-vars now reports values "only used as a type" — which is the entire idiom of this directory (const res = ... consumed via typeof res in check<> assertions, ~900 reports). The rule is disabled for type-check/** via an override.
  • concurrent/concurrentPool specs: no-unused-expressions surfaced a latent comma typo — yield (...)(), yield delay(...) was a single sequence expression. Split into two statements (identical runtime behavior, both yields already executed in order).
  • countBy: side-effect ternary rewritten as if/else.
  • indexBy (src/test): removed genuinely unused imports that v5 had only warned about.

Test plan

  • npm run lint: 0 errors, 0 warnings (was 0 errors / 7 warnings on v5)
  • compile:check exit 0; full jest suite passes (1146 tests)

@typescript-eslint 5.60 declares support for TS <5.1 while the repo is
on 5.9, and warnOnUnsupportedTypeScriptVersion: false silenced the
mismatch - any TS 5.2+ syntax would crash the parser in CI with no
hint. Upgrade to v8 (with eslint 8.57) and drop the suppression.

Fallout from v8's stricter recommended set:
- type-check/: disable no-unused-vars for the directory - its whole
  idiom is values consumed only via `typeof` in type positions, which
  v8 now reports
- concurrent/concurrentPool specs: fix a latent `yield ..., yield`
  comma typo into two statements (same semantics, now lint-clean)
- countBy: side-effect ternary -> if/else
- indexBy: drop genuinely unused imports (previously warnings)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ppeeou ppeeou self-assigned this Aug 8, 2026
@ppeeou
ppeeou merged commit eff37cf into main Aug 8, 2026
4 checks passed
@ppeeou
ppeeou deleted the chore/typescript-eslint-v8 branch August 8, 2026 06:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant