Что такое рефлексия в TypeScript

Ответ

Рефлексия в TypeScript — это возможность анализировать и изменять структуру объектов во время выполнения. Однако, в отличие от языков с полной рефлексией (например, Java), TypeScript ограничен из-за компиляции в JavaScript.

Основные возможности:

  • Проверка типов через typeof, instanceof
  • Получение информации о типах через декораторы или метаданные (с emitDecoratorMetadata: true)

Пример с декораторами:

function logType(target: any, key: string) {
  const type = Reflect.getMetadata("design:type", target, key);
  console.log(`${key} type: ${type.name}`);
}

class Example {
  @logType
  public name: string = "test";
}
// Выведет: "name type: String"

Важно: рефлексия в TypeScript работает только с включенными флагами компилятора и имеет ограничения, так как типы стираются при компиляции.