I have a function that returns boolean if tree has at least one enebled value:
treeHasEnabledNode(): Function { let enabled = false; return function isNodeEnabled(node: T): boolean { if (!node || !node.children || !node.children.length) return enabled; if (node.enabled && node.enabled !== undefined) return true; node.children.forEach((node: T) => { enabled = isNodeEnabled(node); }); return enabled; }; }
Using is:
let hasEnabled = treeHasEnabledNode()(this.tree);
How to return result not calling outher functon (this.tree)?
Advertisement
Answer
You can go about this a few ways. The most simple one would probably be to invoke the internal function within the outer function, and return the result:
function treeHasEnabledNode(node) { let enabled = false; function isNodeEnabled(node) { // do whatever. for example: return enabled } return isNodeEnabled(node); } const node = {}; console.log(treeHasEnabledNode(node));
However, as @sledetman mentioned in the comments below your question, the code snippet you provided does not “return a boolean if tree has at least one enabled value”.