2016-10-16 14 views
5

私はtypescriptライブラリを使用していくつかの反射を行っています。主に、私はts.createSourceFileを使用し、メモリに格納されたファイルを渡しています。これは本当にうまく動作し、ノードを簡単に移動して、(htmlファイルの)バインディング構文とViewModels(typescript)を照合して、アクセスが良好であることを確認できます。ts.createProgramを使用せずにTypescript TypeCheckerを作成しますか?

私の問題は、私が持っている結果のts.SourceFileオブジェクトで基本的な型チェックをしたいということです。これまでのところ、私はTypeCheckerインターフェイスをProgramクラスに追跡することしかできませんでした。残念ながらts.createProgramはファイルにパスを持ちますが、すでに持っているSourceFileコレクションに渡したいと思います。

既に持っているts.SourceFileオブジェクトを使用してタイプチェックを行う方法はありますか?私が本当に知る必要があるのは、右辺が左辺に代入可能で、両方の型ノードがある場合です。

答えて

-1

あなたがそうのようなts.createSourceFile()を使用することができます。

let sourceCode = fs.readFileSync(commander.file); 
let sourceFile = ts.createSourceFile(commander.file, sourceCode.toString(), ts.ScriptTarget.ES2015, true); 
visitNode(sourceFile); 

そしてvisitNode機能では、あなたがTypeChecker情報公開NodeObjectノードにアクセスすることができます。

function visitNode(node: NodeObect) {  
    recognize(node); 
    node.getChildren().forEach(c => visitNode(c)); 
} 
+0

私の知る限りを、このアプローチは」doesnの型情報へのアクセスを与え、構文木だけにアクセスします。 – TGV

+0

はい、そうです。静的型にアクセスすることはできません。しかし、回避策として 'ts.SyntaxKind'インターフェースを使うことができます。 –

関連する問題