【发布时间】:2021-06-25 08:34:47
【问题描述】:
我是 Typescript 的新手,我需要一些帮助来修复错误 Type instantiation is excessively deep and possibly infinite.(2589)
操场是here。
要查看错误,请取消注释 Type ExpandThrowAnError。
背景。
我创建了两个泛型来帮助我定义 API。 API 返回的每个对象都可以有一些键,可以在请求期间根据需要进行扩展。
因此,通用 KeysCanBeExpanded 帮助我获取对象上可以展开的所有键,Expand 帮助我使用传递给它的键来扩展对象。
另外,正如您将在操场上看到的那样,这两个泛型就像魅力一样,但如果我将它们组合在一起,编译器就会开始抱怨并告诉Type instantiation is excessively deep and possibly infinite.(2589)
【问题讨论】:
-
请考虑修改此问题中的代码以构成minimal reproducible example,清楚地表明您面临的问题;在尝试编译特别讨厌的类型时,我当然已经看到 Playground 变慢了,所以希望你也可以在这里做同样的事情。这将使那些想要帮助您的人立即着手解决问题,而无需首先重新创建它。它将使您得到的任何答案都可以针对定义明确的用例进行测试。
-
@jcalz 非常感谢您的评论。我将尽快用您提出的最小可重复示例更新问题。
标签: typescript recursion optimization expand