class Custom1 { }
class Custom2 { }
class Custom3 { }
class Custom4 { }
class Foo {
custom1s: Custom1[];
custom2s: Custom2[];
custom3: Custom3;
custom4: Custom4;
}
type SomeMapping<T> = {
[P in keyof T]
: T[P] extends any[] ? object[]
: (T[P] | object);
}
type FooMapped = SomeMapping<Foo>;
Фактическая типизация такова:
type FooMapped = {
custom1s: object[];
custom2s: object[];
custom3: object | Custom3;
custom4: object | Custom4;
}
Что мне бы хотелось:
type FooMapped = {
custom1s: (object | Custom1)[];
custom2s: (object | Custom2)[];
custom3: object | Custom3;
custom4: object | Custom4;
}
Как нам захватить тип массива, чтобы мы могли его повернутьв союз?