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