【问题标题】:How can I access the AST that VSCode creates如何访问 VSCode 创建的 AST
【发布时间】:2017-12-03 09:43:00
【问题描述】:

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

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

【问题讨论】:

    标签: visual-studio-code sapui5 vscode-extensions ui5-language-assistant


    【解决方案1】:

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

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

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

    【讨论】:

    • 这很好用。是否也可以将 this 关键字分配给这种类型。我在jsdocs中搜索但它不起作用。如果您有任何想法会很棒。在此处输入图片描述
    • UI5 正在慢慢开始支持 TypeScript:github.com/SAP/ui5-typescript
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多