Skip to content

Commit 00539e9

Browse files
committed
Fix deep key types
1 parent 552a21a commit 00539e9

2 files changed

Lines changed: 6 additions & 1 deletion

File tree

src/types/objects.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ describe('Object types', () => {
4646
| 'author.id'
4747
| 'author.name'
4848
| 'categories'
49+
| `categories.${number}`
50+
| `categories.${number}.id`
4951
| 'deep'
5052
| 'deep.one'
5153
| 'deep.one.two'

src/types/objects.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ export type DeepKeyOf<T, TRequired extends DeepRequired<T> = DeepRequired<T>> =
1515
[K in keyof TRequired]: TRequired[K] extends Function
1616
? never
1717
: TRequired[K] extends Array<infer TItem>
18-
? `${Exclude<K, symbol>}.${number}.${DeepKeyOf<TItem>}`
18+
?
19+
| `${Exclude<K, symbol>}`
20+
| `${Exclude<K, symbol>}.${number}`
21+
| `${Exclude<K, symbol>}.${number}.${DeepKeyOf<TItem>}`
1922
: TRequired[K] extends object
2023
?
2124
| {

0 commit comments

Comments
 (0)