【发布时间】:2021-08-25 15:03:26
【问题描述】:
我正在尝试键入一个 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 };
}
}
谢谢。
【问题讨论】:
-
你能解释一下这个问题中的“双变量”是什么意思吗?我对 TypeScript 中该术语的理解涉及 type variance,但我认为这里不会发生这种情况
-
别在意这个,这可能是我对这个词的含义的误解,因为我对类型理论的知识完全为零。
-
我很高兴将其更改为其他内容...您的意思是“变化”或“可变”或“依赖”还是什么?
-
我的意思是该函数可以返回类型的联合。
标签: typescript recursion typing