TIP: SyntaxKind enum

SyntaxKindconst enumとして定義されています。これはサンプルです:

export const enum SyntaxKind {
    Unknown,
    EndOfFileToken,
    SingleLineCommentTrivia,
    // ... LOTS more

それは_インライン展開_(例えばts.SyntaxKind.EndOfFileToken1になる)されるためのconst enum(前に説明した概念)です。それにより、ASTを扱う際に、デリファレンスするコストが発生しません。しかしコンパイラは--preserveConstEnumsコンパイラフラグでコンパイルされるので、enumは実行時にも利用可能です。なので、JavaScriptでは、必要に応じてts.SyntaxKind.EndOfFileTokenを使用できます。さらに、次の関数を使用してこれらの列挙型メンバを変換し、文字列を表示することもできます。

export function syntaxKindToName(kind: ts.SyntaxKind) {
    return (<any>ts).SyntaxKind[kind];
}

最終更新