TS何时计算类型实例化(与错误有关:“类型实例化过深并且可能是无限的”)?

时间:2019-06-02 21:47:49

标签: typescript

我正在使用TS 3.5.1,对于复杂的映射类型,存在“类型实例化过深,甚至可能是无限的”问题。

我已经奋斗了几天,试图以我对问题的最佳理解来优化类型。

TypeScript何时何地计算类型实例化?是否每次都涉及泛型类型?它是否还将所有类型都包含在映射通用类型的并集结果中?它会在通用类型映射中计算所有“条件”,还是仅在匹配之前计算?将X类型的并集作为通用类型的参数算作X​​类型实例化还是1类型实例化?

背景信息:
有问题的类型有些相似,并且受JSON模式的启发。它将模式声明映射为具体类型,因此在损害其核心功能之前我可以摆脱多少复杂度是有限制的。

这是一个声明示例:

const someDeclaration = {
  type: 'Object'
  required: true
  additionalProperties: false
  trim: false
  properties: {
    prop1: {
      type: 'Object'
      required: true
      additionalProperties: false
      trim: true
      properties: {
        prop2: {
          type: 'Array'
          required: false
          items: { type: 'Number' }
        }
      }
    }
  }
} as const

此类型的结果:

{
  readonly prop1: {
    readonly prop2?: ReadonlyArray<number> | undefined;
  }
}

0 个答案:

没有答案