【问题标题】:Rewrite Recursive Function in Typescript Cannot Find Name在 Typescript 中重写递归函数找不到名称
【发布时间】:2018-02-23 17:17:10
【问题描述】:

我有以下用 JavaScript 编写的递归函数:

function getNestedChildren(arr, parent) {
  let out = [];
  arr.forEach(function (item) {
    if (item.Parent == parent) {
        let children = getNestedChildren(arr, item.ID);

        if (children.length) {
            item.children = children;
        }
        out.push(item);
    }
  });
  return out
}   //  getNestedChildren

这里的工作示例:https://jsfiddle.net/fp1zvf0h/7/

在 VS Code 中重构为 TypeScript,如:

private getNestedChildren(arr:object[], parent:number):object[] {
  let out:object[];
  arr.forEach((item:{ID:number, Parent:number, children:{}}) => {
    if (item.Parent === parent) {
      let children:object[] = getNestedChildren(arr, item.ID);

      if (children.length) {
        item.children = children;
      }
      out.push(item);
    }
  });
  return out;
} //  getNestedChildren

我得到编译错误Cannot find name 'getNestedChildren'就行了:

let children:object[] = getNestedChildren(arr, item.ID);

我错过了什么?

【问题讨论】:

  • 这是在课堂上吗?
  • 你错过了this。如果您将此函数移动为班级成员,则需要this.getNestedChildren...

标签: typescript


【解决方案1】:

通过包含单词private,看起来这是一个对象方法,在这种情况下您应该调用this.getNestedChildren(arr, item.ID);

【讨论】:

  • 哦,是的。简单的一个xD
猜你喜欢
  • 2016-05-23
  • 2016-12-04
  • 1970-01-01
  • 2016-03-01
  • 2019-10-28
  • 1970-01-01
  • 2016-11-05
  • 2018-08-29
  • 1970-01-01
相关资源
最近更新 更多