Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 数组的数组的类型脚本递归类型_Typescript - Fatal编程技术网

Typescript 数组的数组的类型脚本递归类型

Typescript 数组的数组的类型脚本递归类型,typescript,Typescript,我想描述一些数据,比如数组中的一个值可以是另一个数字数组,这是无限期的,所以类型应该是递归的 使用以下代码,我收到一个错误 类型“number”不能分配给类型“Data” type Data = ReadonlyArray<number> | Data[]; const data: Data = [1, 2, 3, [4, 5, [6, 7]]]; type Data=ReadonlyArray | Data[]; 常量数据:数据=[1,2,3,4,5,6,7]]; 如何使用最

我想描述一些数据,比如数组中的一个值可以是另一个数字数组,这是无限期的,所以类型应该是递归的

使用以下代码,我收到一个错误

类型“number”不能分配给类型“Data”

type Data = ReadonlyArray<number> | Data[];
const data: Data = [1, 2, 3, [4, 5, [6, 7]]];

type Data=ReadonlyArray | Data[];
常量数据:数据=[1,2,3,4,5,6,7]];
如何使用最新的TypeScript修复它

type E = number

type ListOfE = E[]

type NestedListOfE = (E | NestedListOfE)[]

const a: E = 10
const b: ListOfE = [ 1, 2, 3 ]
const c: NestedListOfE = [ 1, 2, [ 3, [ 4, 5 ] ] ]

注意:递归类型的使用仅在TS 3.7之后才可用。

Typescript对数组类型的并集和数组的并集的处理非常不同。类似于
[1,2,3,[4,5]]
的东西实际上是
(number | number[])[]
-这类不可分配给
number[]| number[]

这意味着您需要一个联合数组,其中联合可以循环引用自身

type Data = readonly (number | Data)[];
上面将声明递归原子的只读数组,
number
。现在您可以分配
[1,2,3,4,5,6,7]]


上尝试一下这个
type Data=ReadonlyArray?WDYT?这里的readonly和ReadonlyArray有什么区别?它们应该是等效的否?@Radex
readonly number[]
ReadonlyArray
-
readonly
相同,因为关键字更一般,您可以使用
ReadonlyArray
很好。