AureliaのVSコード拡張を記述して、HTMLファイルのプロパティとメソッドを対にしたviewmodel typescriptクラスにインテリセンスを提供しようとしています。Typescriptファイルを解析してクラス構造体を取得する
私はtypescriptファイルに取得することができますが、私はviewmodelのクラスのプロパティを抽出するために分析するためのツールが必要です。ここでは、そのようなクラスの例である:
import { HttpClient } from 'aurelia-fetch-client';
import { observable, inject } from 'aurelia-framework';
@inject(HttpClient)
export class People {
public people: Person[];
@observable selectedPerson: Person;
private httpClient: HttpClient
public updateMessage: string;
constructor(http: HttpClient) {
this.httpClient = http;
this.httpClient.fetch('http://localhost:5555/api/Persons?$top=10')
.then(result => result.json() as Promise<ODataPerson>)
.then(data => {
this.people = data.value;
});
}
setSelected(selected: Person) {
this.selectedPerson = selected;
}
activate() {
...
}
}
だから私は可能であれば任意のパブリックメソッド、すなわちするsetSelectedもこのことからプロパティの配列、すなわち人、selectedPerson、およびupdateMessageを抽出し、したいと思います。
これを行うための最善の方法は、必要とするクラスを消費すること、その後、例えばjavascriptのリフレクションを使用します
var Reflector = function(obj) {
this.getProperties = function() {
var properties = [];
for (var prop in obj) {
if (typeof obj[prop] != 'function') {
properties.push(prop);
}
}
return properties;
};
しかし、これを行うには、私は、TSはJavascriptまでファイルをコンパイルする必要があるだろうと、それはアウレリアの一部として実行している必要がありますのHttpClientのような依存関係をインポートして注入するので、私はまだそれを消費することができませんでした私はVSコード拡張のコンテキストから実行しています。
だから私は、このようなTSLintとして、それを消費することなく、静的コードを解析することができるかもしれないツール、見ていたが、私は、クラスのプロパティとメソッドを抽出するための任意の施設を見ることができません。
誰も私が達成しようとしていることを行うことができるツールを知っていますか?
はいあなたが正しいです。私はタイプチェッカーのサンプルコードを使用してタイプ情報を抽出しています:https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API。今すぐプロパティを抽出する方法を考えなければなりません。ポインタありがとう! – PRS