Ответ
Рефлексия в 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 работает только с включенными флагами компилятора и имеет ограничения, так как типы стираются при компиляции.