Skip to content

TSM-92: enable noImplicitAny and harden typing - #576

Open
Justin Hammond (Justintime50) wants to merge 121 commits into
ts-migrate/91-cleanup-calibrationfrom
ts-migrate/92-no-implicit-any-hardening
Open

TSM-92: enable noImplicitAny and harden typing#576
Justin Hammond (Justintime50) wants to merge 121 commits into
ts-migrate/91-cleanup-calibrationfrom
ts-migrate/92-no-implicit-any-hardening

Conversation

@Justintime50

@Justintime50 Justin Hammond (Justintime50) commented Aug 24, 2026

Copy link
Copy Markdown
Member

Summary

  • enable noImplicitAny in build, declarations, and service-test tsconfigs
  • resolve strictness fallout across source and service tests
  • replace missing external type imports with local structural aliases where needed

Validation

  • npm run lint
  • npm run formatCheck
  • npm run typescript

@Justintime50
Justin Hammond (Justintime50) force-pushed the ts-migrate/92-no-implicit-any-hardening branch from 9a62d5e to 43b6b9e Compare August 24, 2026 19:32

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm... so this turns off noImplicitAny, but then it types a bunch of them as any anyway so we are not getting a lot of a wins of TS.

In some of these place where stuff could be anything, like in the response checkers or errors, I think we should prefer unknown. any uses honor-system checking, "Yes TS, I promise I checked that this should work". unknown has TS check that it will work as expected. Its more verbose in places but a lot more type safe.

You could also make the errors default to unknown with the tsconfig setting.

Comment on lines +93 to +95
const params = returnUrl
? { return_url: returnUrl }
: (null as unknown as Record<string, unknown>);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue:
Huh. Thats not right...

let classObject;
if (RESOURCES[response.object] !== undefined) {
classObject = new RESOURCES[response.object]();
const responseRecord = response as Record<string, any>;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion:
We could use another type guard here to prevent the assertion

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.

2 participants