> For the complete documentation index, see [llms.txt](https://artfulbits-se.gitbook.io/typescript/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://artfulbits-se.gitbook.io/typescript/overview/ast/ast-tip-syntaxkind.md).

# TIP: SyntaxKind enum

`SyntaxKind` визначений як `const enum`, ось приклад :

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

Це `const enum` (концепція [яку ми розглянули раніше](/typescript/type-system/enums.md)). Вона використовується для того, щоб перелік *вбудовувався* безпосередньо у код, замість створення об'єкта переліку. Коли ми використовуємо const enum, значення переліку замінюється прямо в місці використання (наприклад, `ts.SyntaxKind.EndOfFileToken` буде замінено на фактичне значення `1` в усіх місцях, де використовується цей перелік).

Один з основних переваг використання const enum полягає в тому, що ми уникаємо витрат на дереференцію (dereferencing cost), тобто на доступ до об'єкта переліку під час роботи з AST. Оскільки значення вбудовуються безпосередньо в код, нам не потрібно звертатися до об'єкта переліку, що полегшує та прискорює роботу з AST.

Однак, компілятор компілюється з прапорцем `--preserveConstEnums` тому перелік *все ще доступний під час виконання*. Одже, в JavaScript ви можете використовувати `ts.SyntaxKind.EndOfFileToken`, якщо бажаєте. Крім того, ви можете перетворити ці елементи переліку у рядки для відображення за допомогою наступної функції:

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