ts-morph
TypeScript Compiler APIの概念
Node、Declaration
構文の種類ごとにNodeの種類が用意されている。例えば、次のような種類がある。
クラス: ClassDeclaration
クラスのメソッド: MethodDeclaration、MethodSignature
関数: FunctionDeclaration、ArrowFunction
Type
型の情報。
関数の引数、戻り値のような、型を持つNodeには、値がTypeやType[]なプロパティが付いている。
Symbol
NodeやTypeに付いている(付いていない場合もある)一意の識別子のようなもの。
外部の型に対する参照はTypeReferenceというNodeになるが、TypeReferenceは実際の型に対応するSymbolを持っていて、Symbolを経由して実際のNodeやTypeを得られる。
ts-morphでは、TypeやNodeを使いやすくするために、生のTypeScript Compiler APIのTypeやNodeをラップしている。