【发布时间】:2020-06-12 10:49:39
【问题描述】:
我有一个(初学者)问题,有人可以告诉我如何重构/重写我的逻辑,以便我可以访问 evaluateResult 函数中的 namesSplit 变量吗?
export class ExecutableVariableNode implements IExecutableNode {
execute(treeNode: ExpressionTreeNode, exprData: ExpressionData): any {
let namesSplit = treeNode.name.split('.');
let key = namesSplit[0];
let contextEntry = exprData.contextEntry.find(_x => _x.name === key);
if (namesSplit.length > 1) {
this.evaluateResult(contextEntry.value);
}
}
isPrimitive(test): boolean {
return typeof test !== 'object';
}
// Get Values
evaluateResult(val) {
if (this.getType(val) === ExpressionVariableType.OBJECT) {
return Object.values(val);
}
else if (this.getType(val) === ExpressionVariableType.ARRAY_OF_OBJECTS) {
for (let obs of val) {
for (let n = 0; n < namesSplit.length; n++) {
if (namesSplit[n] == Object.keys(obs)) {
let result = Object.values(obs);
console.log(result);
break;
}
}
}
}
else if (this.getType(val) === LapsExpressionVariableType.ARRAY_OF_PRIMITIVES) {
throw new StdException('Array of Primitives not allowed!');
}
else if (this.getType(val) === LapsExpressionVariableType.PRIMITIVE) {
throw new StdException('Primtive values not allowed!');
}
}
}
【问题讨论】:
-
把它移到外面,s.t.它被声明为类的全局成员,或将其作为参数传递给 evaluateResult
-
我已经尝试过了,但是我得到一个错误 (TS1068),告诉我我有一个意外的令牌!
-
您可以使用服务共享变量 ex : stackoverflow.com/questions/50297742/…
标签: javascript angular typescript