diff --git a/source/simplify-deep.d.ts b/source/simplify-deep.d.ts index 7fce736ce..ffbae5d49 100644 --- a/source/simplify-deep.d.ts +++ b/source/simplify-deep.d.ts @@ -1,5 +1,6 @@ import type {ConditionalSimplifyDeep} from './conditional-simplify-deep.d.ts'; import type {MapsSetsOrArrays, NonRecursiveType} from './internal/index.d.ts'; +import type {UnknownArray} from './unknown-array.d.ts'; /** Deeply simplifies an object type. @@ -109,7 +110,7 @@ type SimplifyDeepProperties = SimplifyDeep = ConditionalSimplifyDeep< Type, - ExcludeType | NonRecursiveType | MapsSetsOrArrays, + ExcludeType | NonRecursiveType | Exclude, object >; diff --git a/test-d/simplify-deep.ts b/test-d/simplify-deep.ts index 9b539e14d..a4edfa5c7 100644 --- a/test-d/simplify-deep.ts +++ b/test-d/simplify-deep.ts @@ -32,13 +32,14 @@ declare const flattenProperties: { expectType>(flattenProperties); // Array -type ArrayType = Array<{ - a: string; -}>; +declare function testArraySimplification(arg: {foo: Array<{[x: string]: string}>}): void; -declare const flattenProperties2: { - arrayType: Array<{ - a: string; - }>; -}; -expectType>(flattenProperties2); +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +interface BarBaz { + bar: string; + baz: string; +} + +// This would fail if `SimplifyDeep` did not simplify arrays, +// because interfaces being open are not compatible with index signatures. +testArraySimplification({} as SimplifyDeep<{foo: BarBaz[]}>);