如何在 TypeScript 中创建循环引用类型?

2023-12-05

我有以下代码:

type Document = number | string | Array<Document>;

TypeScript 抱怨以下错误:

test.ts(7,6): error TS2456: Type alias 'Document' circularly references itself.

显然不允许循环引用。但我还是需要这样的结构。解决这个问题的方法是什么?


TypeScript 的创建者解释了如何创建递归类型here.

循环引用的解决方法是使用extends Array。在你的情况下,这将导致这个解决方案:

type Document = number | string | DocumentArray;

interface DocumentArray extends Array<Document> { }

更新(TypeScript 3.7)

从 TypeScript 3.7 开始,将允许使用递归类型别名,并且不再需要解决方法。看:https://github.com/microsoft/TypeScript/pull/33050

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 TypeScript 中创建循环引用类型? 的相关文章

随机推荐

  • TFS 被团队、区域、项目、区域、迭代所混淆

    我对 TFS 中的所有内容感到困惑 有人可以解释一下这一切是如何结合在一起的吗 团队项目集合 团队项目 Team Area 迭代 From 这一页 我认为一个 团队 项目集合可以包含多个 团队 项目 其中可以包含多个团队 是对的吗 项目可以
  • 如何检查二维向量中的所有元素是否为零?

    我在 Stack Overflow 上发现 这个语句可以用来判断向量的所有元素是否为零 但这仅适用于一维向量 bool zeros std all of v begin v end int i return i 0 我如何修改它以便它可以用
  • JS 事件:挂钩文本输入上的值更改事件

    我有一个文本输入 其内容是由脚本而不是用户更改的 所以我想在值发生变化时触发一个事件 我找不到合适的活动 我什至发现StackOverflow 上的这个 但这不是我正在寻找的解决方案 如何使用 jQuery 和文本输入来实现此功能 其中值设
  • 在 Google Play 上更新使用 PWA2APK 构建的 PWA 应用时出现问题

    我已经使用 PWA2APK 将 React 应用程序的第一个版本上传到 Google Play 效果很好 但每次我尝试通过上传新版本来更新应用程序时 都会收到以下信息 You uploaded an APK that is not sign
  • 多站点中的 ASP.NET 身份用户和角色 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在尝试在 ASP NET MVC 应用程序中创建权限系统 我一直在学习最新的身份框架 这是我的要求 A set of Hierarchical Roles for each
  • 如何在React Router v6中将函数传递给state

    当我单击其中一条路线的链接时 我想在两条路线之间共享状态 NewUser 我想要共享的状态和修改它的逻辑都保存在Users路线 我想传递将状态更改为的逻辑NewUsers route 当我将字符串传递给路由器中的状态对象时Link 我可以在
  • 如何在 Java 5 中使用 ExecutorService 实现任务优先级?

    我正在实现一个线程池机制 我想在其中执行不同优先级的任务 我想要一个很好的机制 通过该机制我可以向服务提交高优先级任务 并将其安排在其他任务之前 任务的优先级是任务本身的固有属性 无论我将该任务表达为Callable or a Runnab
  • Azure 文件存储活动是否可以触发 Azure WebJob 或 Azure Function?

    Azure 文件存储活动可以触发 Azure WebJob 或 Azure Function 吗 例如 在文件夹 todo 中创建文件时 目前 我们没有任何 Azure 文件绑定 但在我们的存储库中跟踪该功能时遇到问题 https gith
  • 无法使用 tidyr 中的 newivot_wider() 填充缺失值

    我对新事物感到疯狂tidyr pivot wider 具有缺失值特征的函数 有时有效 有时无效 这是一个可重现的示例 require tidyr df lt data frame color c green yellow nb c 1758
  • CudaAPIError:[1] 调用 cuLaunchKernel 会导致 Python 中的 CUDA_ERROR_INVALID_VALUE

    当我尝试使用 CUDA 在 Python 中运行此代码时遇到此错误 我正在遵循本教程 但我正在 Windows 7 x64 机器上尝试它 https www youtube com watch v jKV1m8APttU 事实上 我运行 c
  • 将 Excel 文件转换为 JSON 文件的最佳方法?

    我将数据保存在 Microsoft Excel 文件中 我需要将该数据转换为 Lambda 函数可以解析的内容 我认为最好的方法是将 Excel 文件转换为 JSON 文件 然后我的 Lambda 函数可以读取并解析它 最好的方法是什么 要
  • 在Google App Engine中,如何检查urlsafe创建的Key的输入有效性?

    假设我根据用户输入的网络安全网址创建一个密钥 key ndb Key urlsafe some user input 我如何检查是否some user input已验证 我当前的实验表明上面的语句会抛出ProtocolBufferDecod
  • 减少功能的问题

    我一直在尝试创建一个示例问题来测试 javascript 中的reduce 函数 该程序旨在从一组输入行中获取单个对象 function generateInputs var inputLines Math floor Math rando
  • 如何将 WKWebView 恢复到应用程序关闭之前的状态?

    我陷入了死胡同 我只是想不出在用户关闭应用程序后恢复 WKWebView 的方法 当他重新打开它时 他访问过的所有网页都必须在那里 有什么建议么 当他重新打开时 他访问过的所有网页都必须存在 不可能的 访问过的网页的历史记录 backFor
  • 在android中实现uitextfield属性

    我是一名 Android 和 iPhone 开发人员 虽然我正在从事这个巨大的项目 但我是一个新手 我正在尝试在 android 中实现 iphone 中文本字段的 leftView leftviewmode rightview right
  • ES6 导入定义的执行顺序是什么?

    我尝试在互联网上搜索导入模块的执行顺序 例如 假设我有以下代码 import one import two console log three Where one js and two js定义如下 one js console log o
  • 用于实现Python str.count函数的算法

    我遇到了Pythonstr count阅读文档时使用函数 我似乎找不到关于该函数内部工作的任何好的解释 使用什么算法来计算字符串中子串的数量 它实际上是如何运作的 研究源代码在https github com python cpython
  • 从列表视图中获取子项

    我试图从列表视图中获取 Subitem 我这样做了但不起作用 curItem1 listView2 gt Items i gt Text curItem2 listView2 gt SubItem i gt Text ListViewIte
  • PHP7 中的可空返回类型

    PHP 7 介绍返回类型声明 这意味着我现在可以指示返回值是某个类 接口 数组 可调用或新的可提示标量类型之一 就像函数参数一样 function returnHello string return hello 通常情况下 值并不总是存在
  • 如何在 TypeScript 中创建循环引用类型?

    我有以下代码 type Document number string Array