Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Typescript接口类型变量,在数组中实现_Angular_Typescript - Fatal编程技术网

Angular Typescript接口类型变量,在数组中实现

Angular Typescript接口类型变量,在数组中实现,angular,typescript,Angular,Typescript,我有一个带有类型变量的接口: interface MyObjectInterface<T> { aProp: keyof T; } 我想你说的是你想要一个数组,它的类型是MyObjectInterface,每个值都有一个任意的T,然后将整个数组键入MyObjectInterface[] 这不是它的工作原理。当您定义类型MyObjectInterface时,该类型不是MyObjectInterface,其附加特性是存在泛型参数;类型为MyObjectInterface。类型本身

我有一个带有类型变量的接口:

interface MyObjectInterface<T> {
   aProp: keyof T;
}

我想你说的是你想要一个数组,它的类型是
MyObjectInterface
,每个值都有一个任意的
T
,然后将整个数组键入
MyObjectInterface[]

这不是它的工作原理。当您定义类型
MyObjectInterface
时,该类型不是
MyObjectInterface
,其附加特性是存在泛型参数;类型
MyObjectInterface
。类型本身由泛型参数本身定义
MyObjectInterface
MyObjectInterface
是同一类型的不同版本;它们是不同的类型

您可以做的是,将数组键入为
MyObjectInterface[]
,而不是有效的类型,而是将数组键入为
MyObjectInterface[]
MyObjectInterface
,这将是一种错误的类型。这将允许使用任意的
T
键入数组项,因为根据定义,任何
T
都将满足
unknown
any


但是,请记住,这样做会将数组中的每个项强制转换为
MyObjectInterface
MyObjectInterface
,从而丢失每个项的更具体类型信息。使用
any
将允许您引用类型
T
的值,而不需要实际知道
T
是什么。相反,您可能应该使用
unknown
,这将使您在引用这些值之前检查
T
是什么。从你的问题来看,我认为这可能是你正在寻找的,但是你应该考虑什么才适合你的特定用例。

每个元素有不同的类型?您期望的行为是什么?
MyObjectInterface
至少会强制执行
T
的类型检查,如果以后引用它。我总是忘记
未知
!是的,我想这比抽象的
任何
都要好一些。我会更新答案的。我明白了,谢谢。我想我是糊涂了,认为这更像是一个传统的参数或参数。你是说我可以在初始化数组时使用然后为每个元素传递一个类型?如果是,怎么做?
objects: MyObjectInterface[] = [
  {
    aProp: 'test'
  }
]