Skip to content

tsconfig staat op strict: true, maar er is geen typecheck-script — tsc draait nergens #2789

Description

@MWest2020

Wat er aan de hand is

tsconfig.json staat op main op:

"strict": true,
"noImplicitAny": true

Maar er is geen script dat de typechecker draait. In package.json staan
build, dev, watch, lint, lint-fix, test, test-coverage,
stylelint, validate-oas en download-oas — geen tsc, geen vue-tsc, geen
typecheck.

De frontend-gate in CI draait npm run lint (eslint) en npm run stylelint.
Typechecken zit daar niet bij, en er is ook geen npm-script dat de gate zou
kunnen aanroepen. npm run build gaat via webpack en transpileert; dat
rapporteert geen typefouten.

Netto: de strengste instelling in het project wordt nergens afgedwongen
niet in de IDE-gate, niet in pre-commit, niet in CI. Strictheid die niemand
afdwingt is documentatie, geen check.

Voorstel

Twee stappen, en bewust niet in één PR:

1. Het script toevoegen (veilig, verandert niets aan CI).

"typecheck": "tsc --noEmit -p tsconfig.json"

Dit is additief. Zolang typecheck niet in de frontend-checks-lijst van
.github/workflows/code-quality.yml staat, draait CI hem niet en verandert er
niets. Wel kan iedereen hem dan lokaal draaien, en kan een PostToolUse-hook of
pre-commit hem oppakken.

2. Meten, dán pas de gate.

Draai npm run typecheck één keer en kijk wat eruit komt. Ik heb dat niet
gedaan — daarvoor moet npm ci draaien, en dat doe ik niet ongevraagd in een
repo die niet de mijne is. Op een codebase waar strict nooit is afgedwongen is
een lange lijst het normale beeld.

Komt er veel uit, dan is de volgorde: eerst het aantal terugbrengen of afbakenen
(bijvoorbeeld tsc --noEmit op een submap), en pas daarna de gate aanzetten.
Een gate aanzetten die meteen rood staat helpt niemand — dat is precies hoe
|| echo-vangnetten ontstaan (zie het andere issue over gates die niet kunnen
falen).

Waar het níét hoort

tsc --noEmit kan niet zinvol per bestand: types komen uit andere
bestanden. Dit hoort dus in pre-commit of CI, niet in een per-bestand-hook. Voor
de per-bestand-laag zijn eslint, prettier en stylelint de juiste tools, en
die staan er al.

Herkomst

Gevonden bij de voorbereiding van een sessie over shift-left, op 2026-08-21.
Geverifieerd tegen main via de GitHub API op 2026-08-22 — mijn eerste meting
keek naar lokaal uitgecheckte feature-branches en overschatte het bereik; op
main is openregister de enige van de onderzochte repo's met een
tsconfig.json met strict: true.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

triageAwaiting triage

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions