2017-09-01 3 views
0

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として、それを消費することなく、静的コードを解析することができるかもしれないツール、見ていたが、私は、クラスのプロパティとメソッドを抽出するための任意の施設を見ることができません。

誰も私が達成しようとしていることを行うことができるツールを知っていますか?

答えて

2

あなたはこれを達成するために、コンパイラ自体を使用する必要があります。コンパイラは、typescriptをサポートするすべてのIDEで使用されるintel sense用のAPIを提供します。 Link to the API。言語サービスは、クラスを分析し、情報を提供できる必要があります。私はあなたがすでにVSコードで実行されている言語サービスをアクセスもできませんが、私はその上の情報を持っていない天気になります。

+0

はいあなたが正しいです。私はタイプチェッカーのサンプルコードを使用してタイプ情報を抽出しています:https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API。今すぐプロパティを抽出する方法を考えなければなりません。ポインタありがとう! – PRS

関連する問題