typescript - TypeScript 3.7 递归类型引用 - 记录与索引签名
问题描述
我尝试使用 TypeScript 3.7 中引入的递归类型引用,其方式与官方示例中介绍的方式非常相似。
我做了一些与文档中介绍的内容略有不同的东西,但认为它应该以相同的方式工作。事实证明它没有。
如文档中所述,在递归中使用索引签名:
type Json = string | number | boolean | null | Json[] | { [key: string]: Json; };
但是使用Record
类型不起作用 - 导致循环引用错误
type Json = string | number | boolean | null | Json[] | Record<string, Json>;
对我来说更奇怪的是,手动扩展Record
类型确实可以:
type Json = string | number | boolean | null | Json[] | { [key in string]: Json; };
问题:{ [key: string]: X; }
与Record<string, X>
递归类型有什么区别?不Record<K, V>
等于{ [P in K]: V; }
ieRecord<string, X> === { [key in string]: X; }
吗?为什么递归类型会产生不同的结果?我错过了什么?还是这是 TS 中的错误?
解决方案
推荐阅读
- docker-compose - 错误:未找到 docker.whatsapp.biz/coreapp:vv2.2.3 的清单:清单未知:注册表不知道命名的清单
- android - ionic 4 android 键盘向下左侧空白
- azure-devops-rest-api - 获取工作项状态转换计数的最佳方法?
- xslt - 检查 xsl:attribute name 是否对 XSL-FO 有效
- angularjs - 我的控制器 viewController 不会在我的 ng-view 上被调用
- rest - 如何使用 Rest API 在 IBM 云对象存储中获取区域列表
- javascript - 如何在 react-native 中编写特定于风味的代码?
- java - 如何从用户那里接受java中的参数
- python - 在 scikit-learn 中拟合包含列表的 pandas 列
- asp.net-core - System.Net.Http.HttpRequestException:无法建立 SSL 连接,请参阅内部异常