gpt4 book ai didi

typescript - 如何创建递归类型?

转载 作者:行者123 更新时间:2023-12-05 04:39:39 25 4
gpt4 key购买 nike

我有一些元素,这些元素的子元素的结构与其父元素相同。当我使用 TypeScript 创建它们的类型时,我遇到了一些错误。我该如何解决这个问题?

type RowRecord = Record<string, CellData>;
type CellData = string | number | RowRecord;

错误:

  • 类型别名“CellData”循环引用自身。
  • 类型别名“RowRecord”循环引用自身。

示例记录:

{
"id": "60f49dbb3ee1a9241749abb6",
"gender": "female",
"firstName": "Millicent",
"lastName": "Harrington",
"birthDate": "2013-05-14T04:35:49.400Z",
"age": 8,
"email": "millicent@harrington.com",
"address": {
"country": "USA",
"state": "Utah",
"city": "Cecilia",
"street": "Newkirk Placez",
"houseNumber": 969
}
}

最佳答案

你可以通过展开 Record 来做到到它代表的对象

type RowRecord = { [K in string]: CellData }; // or { [k: string]: CellData }
type CellData = string | number | RowRecord;

TypeScript 不允许您的定义,因为 Record<string, CellData>被热切地评价。如果您给 TS 一个对象类型,TypeScript 会识别它可以推迟对该类型的评估,从而允许递归定义。

关于typescript - 如何创建递归类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70405503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com