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'
}
]