2017-12-03 129 views
1

我为UI5 JavaScript编写VSCode扩展。最缺少的功能是为UI5提供IntelliSense。使用UI5类型,它将工作,但不是。如何访问VSCode创建的AST

这工作:

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

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

存在的问题例如为:

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

    }); 
    }); 

在这种情况下,存在在功能的控制器变量,该变量与之前的命名空间定义。我现在搜索一下可能性,在我的扩展中使用命名空间分配这个变量。我知道这可以在AST做,但我现在已经爱迪尔如何获得访问AST设置:

Controller = sap.ui.core.mvc.Controller 

的目标是现在有完整的IntelliSense在变量控制器

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

回答

1

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

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

要回答原来的问题,你可以用一个TypeScript server plugin访问/修改AST。这是不平凡的,所以我会尽量避免这样做,除非你真的需要

+0

伟大的这是工作。是否也可以使用此类型指定此关键字。我在jsdocs中搜索,但它不起作用。如果你有任何想法将是伟大的 –