扩展 Array 的类实例的有问题的注释

问题描述 投票:0回答:1

例如,在 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();
typescript
1个回答
0
投票

T[]
相当于
Array<T>
,因此您可以使
List
类泛型并在同一泛型类型上扩展
Array

class List<T> extends Array<T> {
    shuffle() {}
}

const listA: List<number> = new List();
listA.shuffle();
© www.soinside.com 2019 - 2024. All rights reserved.