The loose-ts-check utility helps ignore particular types of TS error in
specified files.
This is useful when migrating to a stricter tsconfig.json configuration
incrementally, where only some existing files are allowed to have TS errors.
- ignores specific TS errors from specific files
 - detects files that no longer have to be loosely type-checked
 - auto-updates the loosely type-checked list of files when a file no longer has errors
 - auto-updates the ignored error codes when there are no errors of that type
 - loosely type-checked files can be specified using globs
 
The exclude option in tsconfig.json only tells tsc to not start
type-checking from those files. If some already type-checked file imports a file
listed in the exclude, it will still be type-checked.
Thus, it does not suit this use case.
The vscode team have already encountered a similar problem
and solved it in another way. They created a new tsconfig.json that only
included some files.
While this works great with existing files, it does not automatically enforce a stricter config for new files in the project.
Install the utility with:
npm install loose-ts-check --save-devPipe the result of tsc to loose-ts-check to run the utility:
tsc --noEmit -p tsconfig.strict.json | npx loose-ts-checkTo initialize the list of ignored errors and loosely type-checked files based on the current errors, run:
tsc --noEmit -p tsconfig.strict.json | npx loose-ts-check --initTo automatically update the list of loosely type-checked files, run:
tsc --noEmit -p tsconfig.strict.json | npx loose-ts-check --auto-updateDisplay the list of options by running:
npx loose-ts-check --helpTo avoid running tsc again and again when testing, save the output to a file:
tsc > errors.log;And then, use the tool by redirecting the input:
npx loose-ts-check < errors.logTo migrate the codebase to use a stricter tsconfig.json, you will need 2
tsconfigs:
- 
tsconfig.json- the strict tsconfig. This config will be used by the IDE and by theloose-ts-checktool.The aim is to see the errors in the IDE, to feel motivated to fix the errors while modifying existing files.
 - 
tsconfig.loose.json- a tsconfig that extendstsconfig.json, but has the stricter options turned off.This config will be used by any linter, test runner, bundler you will have.
If you are using
ts-node, you need to passtsconfig.loose.jsonas aTS_NODE_PROJECTvariable, so it uses the correct tsconfig, e.g.cross-env TS_NODE_PROJECT="tsconfig.loose.json" webpack --mode=developmentTo run
tscto do type-checking, pass-p tsconfig.loose.jsonoption:tsc -p tsconfig.loose.json
 
Then, use the following command to initialize the config files:
tsc | npx loose-ts-check --initAfter that, run
tsc | npx loose-ts-checkinstead of tsc to do type-checking.
In case you want to have the errors ignored in your IDE as well, use loose-ts-check-plugin.
To verify the correctness, run:
npm run type-check
npm run lint:formatting
npm run testContributions are welcome!
Make sure the CI passes on your PRs, and that your code is covered by unit tests.