typescript
GitHub
  • README
  • Давайте Почнемо
    • Why TypeScript
  • JavaScript
    • Equality
    • References
    • Null vs. Undefined
    • this
    • Closure
    • Number
    • Truthy
  • Future JavaScript Now
    • Classes
      • Classes Emit
    • Arrow Functions
    • Rest Parameters
    • let
    • const
    • Destructuring
    • Spread Operator
    • for...of
    • Iterators
    • Template Strings
    • Promise
    • Generators
    • Async Await
  • Проект / Project
    • Контекст компіляції / Compilation Context
      • tsconfig.json
      • Які файли / Which Files?
    • Простори Оголошень / Declaration Spaces
    • Модулі / Modules
      • File Module Details
      • global.d.ts
    • Namespaces
    • Dynamic Import Expressions
  • Node.js QuickStart
  • Browser QuickStart
  • Library QuickStart
  • TypeScript's Type System
    • JS Migration Guide
    • @types
    • Ambient Declarations
      • Declaration Files
      • Variables
    • Interfaces
    • Enums
    • lib.d.ts
    • Functions
    • Callable
    • Type Assertion
    • Freshness
    • Type Guard
    • Literal Types
    • Readonly
    • Generics
    • Type Inference
    • Type Compatibility
    • Never Type
    • Discriminated Unions
    • Index Signatures
    • Moving Types
    • Exception Handling
    • Mixins
  • JSX
    • React
    • Non React JSX
  • Options
    • noImplicitAny
    • strictNullChecks
  • Errors in TypeScript
    • Interpreting Errors
    • Common Errors
  • NPM
  • Testing
    • Jest
    • Cypress
  • Tools
    • Prettier
    • Husky
    • ESLint
    • Changelog
  • TIPs
    • String Based Enums
    • Nominal Typing
    • Stateful Functions
    • Currying
    • Type Instantiation
    • Lazy Object Literal Initialization
    • Classes are Useful
    • Avoid Export Default
    • Limit Property Setters
    • outFile caution
    • JQuery tips
    • static constructors
    • singleton pattern
    • Function parameters
    • Build Toggles
    • Barrel
    • Create Arrays
    • Typesafe Event Emitter
  • StyleGuide
  • TypeScript Compiler Internals
    • Program
    • AST
      • TIP: Visit Children
      • TIP: SyntaxKind enum
      • Trivia
    • Scanner
    • Parser
      • Parser Functions
    • Binder
      • Binder Functions
      • Binder Declarations
      • Binder Container
      • Binder SymbolTable
      • Binder Error Reporting
    • Checker
      • Checker Diagnostics
      • Checker Error Reporting
    • Emitter
      • Emitter Functions
      • Emitter SourceMaps
    • Contributing
Powered by GitBook
On this page
  • Вузол (Node)
  • Вихідний файл (SourceFile)
Edit on GitHub
  1. TypeScript Compiler Internals

AST

Вузол (Node)

Основним будівельним блоком Абстрактного Синтаксичного Дерева (AST) є Node. В загальному випадку, Node представляє нелематичні (non-terminals) символи в граматиці мови, проте деякі лематичні символи, такі як ідентифікатори і літерали, також зберігаються у дереві.

Документація вузла AST складається з двох основних елементів: SyntaxKind, який ідентифікує тип вузла в межах AST, і interface, API, яке вузол надає під час інстанціювання в AST.

Нижче наведені ключові елементи interface Node:

  • TextRange визначають початок та кінець вузла в вихідному файлі.

  • parent?: Node батьківський вузол в AST.

У інтерфейсі Node є й інші додаткові елементи, такі як прапорці (flags) та модифікатори (modifiers), які визначають додаткові властивості та характеристики вузлів абстрактного синтаксичного дерева (AST). Ці додаткові елементи надають більше інформації про вузли та їхні властивості, і можуть бути корисними для певних операцій і обробки AST. Докладнішу інформацію можна знайти за допомогою ключового слова interface Node в у вихідному коді. Однак, для навігації та обходу AST, основними та важливими членами Node є ті, які були згадані в початковому поясненні.

Вихідний файл (SourceFile)

  • SyntaxKind.SourceFile

  • interface SourceFile.

Кожен SourceFile є верхнім вузлом абстрактного синтаксичного дерева (AST), який міститься в Program.

PreviousProgramNextTIP: Visit Children

Last updated 2 years ago