问题描述
我想达到以下目的,这是非法的。
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