Skip to content

Commit 42fcdad

Browse files
committed
fix(exact): improve Exact type
1 parent 50d674b commit 42fcdad

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/types.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,18 @@ type TRPCSubscriptionObserver<TValue, TError> = {
3333
onComplete: () => void
3434
}
3535

36+
type ArrayElement<T> = T extends readonly unknown[] ? T[number] : never
3637
export type Exact<Shape, T extends Shape> = Shape extends void
3738
? void
3839
: {
3940
[Key in keyof T]: Key extends keyof Shape
4041
? T[Key] extends Date
4142
? T[Key]
42-
: T[Key] extends object
43-
? Exact<Shape[Key], T[Key]>
44-
: T[Key]
43+
: T[Key] extends unknown[]
44+
? Array<Exact<ArrayElement<Shape[Key]>, ArrayElement<T[Key]>>>
45+
: T[Key] extends object
46+
? Exact<Shape[Key], T[Key]>
47+
: T[Key]
4548
: never
4649
}
4750

0 commit comments

Comments
 (0)