Repository navigation
fix[ObjectKeys]: keep string enum keys as the enum type - #2156
Merged
Merged
Conversation
… string literals
`${Exclude<keyof T, symbol>}` turned every string key into a string literal,
so `findKey`, `mapKeys`, `pickBy`, and `omitBy` on a `Record<Status, T>`
handed back `'active' | 'inactive'` instead of `Status`, and code that passed
the key back into a `Status` parameter stopped compiling. String keys are now
extracted as they are, and only numeric keys go through a template literal.
Keys of a generic object type still support string methods.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
dayongkr
marked this pull request as ready for review
October 23, 2026 09:13
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
ObjectKeys<T>runs every key through a template literal, so string enum keys widen to plain string literals. Since #2077 this also affectsfindKeyandmapKeys(pickByandomitBysince v1.52.0).Changes
ObjectKeys<T>keeps string keys as they are and converts only numeric keys to strings, so string enums stay intact.findKeyandmapKeys, and string methods on keys of a generic object type.ObjectKeysdocs (en, ko, ja, zh_hans).