TypeScript版本: 4.0.2
搜索词: 递归元组类型的扩展元组
代码
我正在尝试创建一个类型,它可以评估以下任意一种情况:
["list", "of", "Post"];
["list", "of", "list", "of", "Post"];
["list", "of", "list", "of", "list", "of", "Post"];
// ... could go on
以下方法会产生循环错误,尽管自3.7起元组类型就具有循环性,但仍然会出现错误:
type Nested = ["list", "of", ...(["Post"] | Nested)];
预期行为:
能够对以下内容进行类型检查(例如):
const nested: Nested = ["list", "of", "list", "of", "Post"];
实际行为:
循环错误。
如果有任何帮助,将不胜感激!谢谢!
3条答案
按热度按时间nwo49xxi1#
另一个重要的能力是泛化"
Nested
"类型,使得以下内容也有效:uqdfh47h2#
@ahejlsberg 有任何建议吗?
lc8prwob3#
我遇到了这个问题,我有一个很好的最小示例,展示了一个看似容易思考的情况:
显然,这个示例不是在实际代码中编写合理的东西,但我认为它清楚地展示了扩展运算符导致类型检查器以某种方式“忘记”递归实际上是没问题的。
作为参考,我的实际用例类型看起来像这样:
我试图输入从node-imap库中获取的内容;在库的类型存根中,它看起来就像它们只是拼写成
any[]
一样。