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有什么区别?它们应该是等效的否?@Radexreadonly number[]
与ReadonlyArray
-readonly
相同,因为关键字更一般,您可以使用ReadonlyArray
很好。