[英]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.