为什么此递归TypeScript函数返回未定义?

时间:2019-10-25 20:07:39

标签: javascript typescript recursion

我正在尝试递归遍历一棵对象树,其中包含对象的对象包含对象,构建字符串,并将该字符串作为VSCode扩展的一部分返回。

type categories = { [key: string]: { [key: string]: { [key: string]: string } } };

const recurseThroughTree = (categories: categories, outputString: string = '', i: number = 0): string => {
  if (i < 2) {
    const categoryKeys: Array<string> = Object.keys(categories);
    const randomCategoryIndex: number = categoryKeys.indexOf(categoryKeys[Math.floor(categoryKeys.length * Math.random())]);
    const randomCategoryName: string = categoryKeys[randomCategoryIndex];
    const randomCategories: any = categories[randomCategoryName];

    outputString += `${randomCategoryName} > `;

    i = i + 1;

    recurseThroughTree(randomCategories, outputString, i);
  } else {
    outputString += categories.text;
    // This logs the correct output
    console.log(outputString);

    return outputString;
  }
};

我希望它返回outputString(可以正确记录),但是它返回的是undefined。

1 个答案:

答案 0 :(得分:3)

我认为您在调用递归函数时错过了回报:

i = i + 1;

return recurseThroughTree(randomCategories, outputString, i);