mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-15 22:22:51 +00:00
29 lines
818 B
TypeScript
29 lines
818 B
TypeScript
import { IScope } from '../types/core';
|
||
import { IScopeBindings, ScopeBindings } from './ScopeBindings';
|
||
|
||
export class Scope implements IScope {
|
||
/**
|
||
* 创建根部 Scope,根据需要被上溯的作用域链决定是否开启新的
|
||
*/
|
||
static createRootScope(): IScope {
|
||
return new Scope();
|
||
}
|
||
|
||
bindings?: IScopeBindings;
|
||
|
||
constructor(public readonly parent: IScope | null = null) {
|
||
this.bindings = undefined;
|
||
}
|
||
|
||
createSubScope(ownIdentifiers: string[]): IScope {
|
||
const originalScopeBindings = this.bindings;
|
||
const newScopeBindings = new ScopeBindings(originalScopeBindings);
|
||
ownIdentifiers.forEach((identifier) => {
|
||
newScopeBindings.addBinding(identifier);
|
||
});
|
||
const newScope = new Scope(this);
|
||
newScope.bindings = newScopeBindings;
|
||
return newScope;
|
||
}
|
||
}
|