首页 > 解决方案 > 如何从 Typescript 中数组中的项类型中删除空接口类型

问题描述

interface EmptyObject {}

interface TypeA {
  type: 'A';
}

interface TypeB {
  type: 'B';
}

type ItemType = EmptyObject | TypeA | TypeB;

type IArray = (ItemType | null)[] | undefined;

这些是生成的类型,这里的问题是ItemType是一个联合,并且总是带有一个EmptyObject类型,我们无法控制源,所以我在想:

  1. 是否可以编写一个实用程序类型来删除EmptyObjectfrom IArray?向下嵌套 1 层。我知道如何删除EmptyObjectItemType但不知道如何删除IArray
  2. 或者我们是否可以编写一个函数,以便我们可以做类似的事情const listOfTypeAorTypeB = getItems(array: IArray),在这种情况下,listOfTypeAorTypeB 它只包含TypeAo TypeB
  3. 或 to 的函数const listofTypeA = getItems(array: IArray),仅在此处获取 TypeA。

约束是:

  1. 应该足够通用,getItems()所以我们不需要每次都改变实现,它可以接收第二个参数接收一个回调来确定类型检查
  2. as,我们可以简单地使用 as 当我们使用它时,但我正在考虑让打字稿从代码中推断出类型。谢谢

标签: typescript

解决方案


推荐阅读