Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What issue does this pull request resolve?
AJV required manually annotating compile and validate with the type to get inference to work. That's no longer the case.
What changes did you make?
I made two changes:
Both of these seem to be necessary. You can test in this playground, where removing either results in failed inference. However, I'm not sure why. I couldn't find much information on how the inference is done, and certainly not a spec that says when it works and when it doesn't. That aspect makes it seem like this behavior isn't great to rely on, but I guess as long as it works in test. I also scanned over the changes for typescript 4.2, but didn't see anything that indicated it would help with inference.
Is there anything that requires more attention while reviewing?
All of the tests pass, but this does upgrade typescript to 4.2, which maybe you don't want to do yet. Note, es-lint warns on typescript 4.1 and above, so that's not great, but it still works.