如何访问VSCode创建的AST

时间:2017-12-03 09:43:00

标签: visual-studio-code vscode-extensions

我为UI5 JavaScript编写了一个VSCode扩展。最缺少的功能是为UI5提供IntelliSense。使用UI5类型,它可以工作,但不是全部。

这有效:

var testvar1 = new sap.m.Button();

现在我可以在testvar1中的VSCode中使用IntelliSense。

问题例如:

sap.ui.define([
  "sap/ui/core/mvc/Controller"
  ], 
  function (Controller) {
    "use strict";
    return Controller.extend("", {

    });
  });

在这种情况下,函数中有一个Controller变量,该变量是使用之前的Namespace定义的。我现在搜索是否可以在我的扩展名中使用命名空间分配此变量。我知道这可以在AST中完成,但我现在已经想到了如何设置AST的访问权限:

Controller = sap.ui.core.mvc.Controller

目标是在变量控制器中提供完整的IntelliSense

到目前为止,我希望很清楚我想要的是什么。

1 个答案:

答案 0 :(得分:1)

如果您只需要为Controller提供类型,请尝试使用jsdocs

sap.ui.define([
  "sap/ui/core/mvc/Controller"
  ], 
  function (/** @type {sap.m.Controller} */ Controller) {
     ...
  });

要回答原始问题,您可以使用TypeScript server plugin访问/修改AST。这不是微不足道的,所以我会尽量避免这样做,除非你真的需要