Typescript 将 ArrayLike 泛型类型解构为基本类型,例如给定 A find I in:A = ArrayLike<I>
Posted
技术标签:
【中文标题】Typescript 将 ArrayLike 泛型类型解构为基本类型,例如给定 A find I in:A = ArrayLike<I>【英文标题】:Typescript destructure ArrayLike generic type to base type e.g given A find I in: A = ArrayLike<I> 【发布时间】:2021-03-29 14:34:54 【问题描述】:我想实现以下,这是非法的。
class Test<ArrayLike<I>>
arr: ArrayLike<I>;
current: I
以下将是解决此问题的另一种方法,但我不知道有什么像ArrayMember
这样的行为。任何帮助将不胜感激。
class Test<I>
arr: I;
current: ArrayMember<I>
【问题讨论】:
【参考方案1】:你可以试试infer
type ElementType<T extends ArrayLike<unknown>> = T extends ArrayLike<infer U>? U : never;
class Test<I extends ArrayLike<unknown>>
arr!: I;
current!: ElementType<I>;
例子:
let foo = new Test<string[]>();
foo.arr; // type string[]
foo.current; // type string
【讨论】:
谢谢,我得到了以下结果,我认为这可以解决问题type ArrayMember<T> = T extends ArrayLike<infer U> ? U : never;
以上是关于Typescript 将 ArrayLike 泛型类型解构为基本类型,例如给定 A find I in:A = ArrayLike<I>的主要内容,如果未能解决你的问题,请参考以下文章
如何将一种泛型类型的结构复制到 TypeScript 中的另一种泛型?