diff --git a/src/immer.d.ts b/src/immer.d.ts
index d2b30a9b..aa370e94 100644
--- a/src/immer.d.ts
+++ b/src/immer.d.ts
@@ -53,6 +53,10 @@ export type Produced = Return extends void
? Promise>
: FromNothing
+type ImmutableArray> = {
+ [P in Extract]: ReadonlyArray>
+}[Extract]
+
type ImmutableTuple> = {
readonly [P in keyof T]: Immutable
}
@@ -63,7 +67,7 @@ export type Immutable = T extends object
? T
: T extends ReadonlyArray
? Array extends T
- ? {[P in keyof T]: ReadonlyArray>}[keyof T]
+ ? ImmutableArray
: ImmutableTuple
: {readonly [P in keyof T]: Immutable}
: T