我为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
到目前为止,我希望很清楚我想要的是什么。
答案 0 :(得分:1)
如果您只需要为Controller
提供类型,请尝试使用jsdocs:
sap.ui.define([
"sap/ui/core/mvc/Controller"
],
function (/** @type {sap.m.Controller} */ Controller) {
...
});
要回答原始问题,您可以使用TypeScript server plugin访问/修改AST。这不是微不足道的,所以我会尽量避免这样做,除非你真的需要