例如,在 TypeScript 中,您可以指定数组的元素必须是数字 (
const array: number[] = [];
)。但是,我无法指定 Array
子类的元素必须是数字、字符串或任何其他类型。
下面的代码片段创建了一个扩展
List
的 Array
类。 TypeScript 抛出错误,因为最后 3 行我指定了 List
实例必须包含的元素类型。有人如何正确注释吗?请注意,我不想在声明类 List
的位置添加注释。这是因为我希望 List
的实例具有灵活性。
class List extends Array {
shuffle() {}
}
const listA: number[] = new List();
listA.shuffle();
const listD: boolean<List> = new List();
const listB: number<List> = new List();
const listC: string<List> = new List();
T[]
相当于 Array<T>
,因此您可以使 List
类泛型并在同一泛型类型上扩展 Array
。
class List<T> extends Array<T> {
shuffle() {}
}
const listA: List<number> = new List();
listA.shuffle();