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>
我想实现如下,这是非法的
class Test<ArrayLike<I>> {
arr: ArrayLike<I>;
current: I
}
以下是解决此问题的另一种方法,但我不知道任何类似 ArrayMember
的方法。任何帮助将不胜感激。
class Test<I> {
arr: I;
current: ArrayMember<I>
}
你可以试试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
我想实现如下,这是非法的
class Test<ArrayLike<I>> {
arr: ArrayLike<I>;
current: I
}
以下是解决此问题的另一种方法,但我不知道任何类似 ArrayMember
的方法。任何帮助将不胜感激。
class Test<I> {
arr: I;
current: ArrayMember<I>
}
你可以试试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