簡體   English   中英

Typescript 數組數組的遞歸類型

[英]Typescript recursive types for array of array

我想將一些數據描述為數組中的值可能是另一個數字數組,這是無限期完成的,因此類型應該是遞歸的。

使用以下代碼,我收到一個錯誤

Type 'number' is not assignable to type 'Data'

type Data = ReadonlyArray<number> | Data[];
const data: 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[][] number[] | number[][]

這意味着您需要一個聯合數組,其中聯合可以循環引用自身。

type Data = readonly (number | Data)[];

上面將聲明遞歸原子的只讀數組number 現在您可以分配[1, 2, 3, [4, 5, [6, 7]]]

操場上試試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM