我正在尝试键入一个typescript函数,该函数向任意深度的嵌套数组中的对象添加属性。运行时代码在Javascript中是微不足道的,但我已经花了一整天的时间来编译Typescript类型。
代码应采用类似于此[{}, {}]或此[[{},{}]]或此[[[{},{}]]]的数组,并向每个对象添加marked:true属性;
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 };
}
}谢谢。
发布于 2021-08-25 15:40:29
您只是在函数上缺少正确的返回类型。它需要像源数组一样是Nested<T>。为了完整性,我还添加了marked属性,因为这可能对查找有用。
function markNested<T>(objOrNestedArray: Nested<T>): Nested<T & { marked: boolean }> {
/*... */
}https://stackoverflow.com/questions/68925375
复制相似问题