Typescript 数组<;类型的并集>;到数组<;泛型并集>;

Typescript 数组<;类型的并集>;到数组<;泛型并集>;,typescript,typescript-typings,union-types,generic-type-argument,Typescript,Typescript Typings,Union Types,Generic Type Argument,我试图定义两种数组类型之间的关系,它们由包装器泛型类型关联: 接口包装器类型{ 内值:T; } 类型InnerArrayType=(类型A |类型B |类型C)[]; 类型WrappedArrayType=(WrapperType | WrapperType | WrapperType)[]; 但是,这两个联合类型之间的信息不一致。当其中一个更改时,另一个也必须手动更改。我想知道是否有一个可重用的实用程序类型可以接受InnerArrayType、WrapperType和output Wrapp

我试图定义两种数组类型之间的关系,它们由包装器泛型类型关联:

接口包装器类型{
内值:T;
}
类型InnerArrayType=(类型A |类型B |类型C)[];
类型WrappedArrayType=(WrapperType | WrapperType | WrapperType)[];
但是,这两个联合类型之间的信息不一致。当其中一个更改时,另一个也必须手动更改。我想知道是否有一个可重用的实用程序类型可以接受InnerArrayType、WrapperType和output WrappedArrayType

type MagicUtility<T> = ???????

type WrappedArrayType = MagicUtility<InnerArrayType>;
// equivalent to
type WrappedArrayType = (WrapperType<TypeA>|WrapperType<TypeB>|WrapperType<TypeC>)[];

type MagicUtility=???????
类型WrappedArrayType=魔力;
//相当于
类型WrappedArrayType=(WrapperType | WrapperType | WrapperType)[];
在我的用例中,TypeA、TypeB、TypeC的列表。。。是预定义的、静态的和有限的。请注意,它们不是字符串类型

更新

我能够用下面的方法得到
数组
。因此,有一种方法可以将
数组
转换为
数组
,问题就解决了。然而,这似乎是一个不可能的问题:

接口MyWrapper{
内:T;
}
类型ArrayFunionToArrayFunionOfGeneric=
T扩展(推断U)[]
? MyWrapper[]
:从不;
内部类型=(1 | 2 | 3)[];
类型Outer=ArrayFunionToArrayFunionOfGeneric//MyWrapper[]
//MyWrapper[]-(如何?)-->(MyWrapper | MyWrapper | MyWrapper)[]
这可以使用a:U扩展推断V部分是分布在联盟上的部分

type MagicUtility<T extends any[]> =
  (T extends (infer U)[] ? U extends infer V ? WrapperType<V> : never : never)[]
类型魔力=
(T扩展(推断U)[?U扩展推断V?包装器类型:从不:从不)[]