簡體   English   中英

在 typescript 中使用聯合返回類型鍵入遞歸 function

[英]Typing recursive function with union return type in typescript

我正在嘗試鍵入一個 typescript function,它向任意深度的嵌套 arrays 中的對象添加一個屬性。 運行時代碼在 Javascript 中是微不足道的,但我一整天都在努力讓 Typescript 類型進行編譯。

代碼應該采用這樣的數組[{}, {}][[{},{}]][[[{},{}]]]並將marked:true屬性添加到每個 object;

type Nested<T> = T | Array<Nested<T>>;
function markNested<T>(objOrNestedArray: Nested<T>): T {
  if (Array.isArray(objOrNestedArray)) {
    return objOrNestedArray.map(markNested);
  } else {
    return { ...objOrNestedArray, marked: true };
  }
}

謝謝。

您只是缺少 function 上的正確返回類型。它需要像源數組一樣是Nested<T> 為了完整起見,我還添加了 marked 屬性,因為這可能有助於查找。

function markNested<T>(objOrNestedArray: Nested<T>): Nested<T & { marked: boolean }> {
  /*... */
}

暫無
暫無

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

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