-
Notifications
You must be signed in to change notification settings - Fork 535
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make KeyPaths not require @ts-ignore #1842
Conversation
🦋 Changeset detectedLatest commit: 8701588 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
size-limit report 📦
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM ✨
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, thanks @jclem!
Currently,
KeyPaths
requires a@ts-ignore
line, because TypeScript can't verify thatO[K]
is aRecord<string, unknown>
.In order to fix this, we can change
KeyPaths<O extends Record<string, unknown>>
to justKeyPaths<O>
, but internally still verify that when recursing throughO
, we only recurse whenO[K] extends Record<string, unknown>
.This makes it so that
KeyPaths
can be called on any value and I'm not sure if the repercussions of that are relevant. However, we should avoid@ts-ignore
in types that are potentially consumed by projects using @primer/react, otherwise we essentially require that they haveskipLibCheck: true
in their TS config files.There may be some better way of solving this, but my TypeScript knowledge isn't strong enough to figure it out 😄