首页 > 解决方案 > Typescript 成功创建递归条件类型

问题描述

作为一个练习,我创建了:

type NotRecursive<T, U = never> = {
  [K in keyof T]: T[K] extends U | T ? never : NotRecursive<T[K], U | T>
}

哪个工作得相当好[1],但随后浏览文档并发现:

与联合和交集类型类似,条件类型不允许递归地引用自身。例如以下是一个错误。

type ElementType<T> = T extends any[] ? ElementType<T[number]> : T; // Error

为什么我的NotRecursive类型有效但文档示例无效?

[1] 如果它未能创建类型而不是允许它存在并且使用失败,那将会很好。

标签: typescript

解决方案


推荐阅读