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

arsis-dev

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

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将满足unknownany

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章