我有一个带有类型变量的接口:
interface MyObjectInterface<T> {
aProp: keyof T;
}
稍后,在我的组件中,我将如何为每个数组元素提供不同的类型变量?
objects: MyObjectInterface[] = [
{
aProp: 'test'
}
]
我认为你的意思是你想要一个类型为 的值数组MyObjectInterface<T>
,每个值都有一个任意的T
,并将整个数组键入为MyObjectInterface[]
。
这不是它的工作原理。定义 type 时MyObjectInterface<T>
,type 并没有MyObjectInterface
带有泛型参数的附加特性;类型是 MyObjectInterface<T>
. 类型本质上是由泛型参数本身定义的。MyObjectInterface<string>
并且MyObjectInterface<number>
是不不同版本的相同类型的; 它们是不同的类型。
您可以做的是将数组键入而不是 as MyObjectInterface[]
,这不是有效类型,而是 as MyObjectInterface<unknown>[]
or MyObjectInterface<any>
,这将是。这将允许使用任意类型输入数组的项T
,因为根据定义, anyT
将满足unknown
或any
。
但是请记住,这样做会将数组中的每个项目都强制转换为MyObjectInterface<unknown>
or MyObjectInterface<any>
,从而导致您丢失每个项目的更具体的类型信息。Usingany
将允许您在T
不知道什么的情况下引用 type 的值T
。相反,您可能应该使用unknown
,这将使您T
在引用这些值之前检查是什么。从你的问题来看,我认为这可能是你正在寻找的,但你应该考虑什么实际上适合你的特定用例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句