4

我为 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

目标是现在在变量 Controller 中拥有完整的 IntelliSense

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

4

1 回答 1

2

如果您只需要给一个类型Controller,请尝试使用JSDoc

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

要回答最初的问题,您可以使用TypeScript 服务器插件访问/修改 AST 。这不是微不足道的,所以除非你真的需要,否则我会尽量避免这样做。

于 2017-12-04T19:20:46.173 回答