@lcap/asl
Version:
NetEase Application Specific Language
34 lines (32 loc) • 940 B
text/typescript
import { immutable } from '../../decorators';
import { ExpressionNode, LOGIC_TYPE } from '../LogicItem';
/**
* 成员表达式
* @TODO: 当前类目前主要用于生成文档
*/
export class MemberExpression extends ExpressionNode {
/**
* 逻辑节点类型
*/
()
public readonly type: LOGIC_TYPE = LOGIC_TYPE.MemberExpression;
/**
* 对象
*/
()
public readonly object: ExpressionNode = undefined;
/**
* 属性
*/
()
public readonly property: ExpressionNode = undefined;
/**
* 生成 JS 脚本
*/
toScript() {
if (String(this.property.type).endsWith('Literal'))
return `${this.object.toScript()}[${this.property.toScript()}]`;
else // 生成代码尽量简洁一些,目前属性没有特殊字符的情况
return `${this.object.toScript()}.${this.property.toScript()}`;
}
}