2017-12-03 155 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中搜索,但它不起作用。如果你有任何想法將是偉大的 –