#typescript #decorator
#typescript #декоратор
Вопрос:
Документация typescript по декораторам классов совершенно ясна, что декораторы запускаются при объявлении, а не при создании экземпляра.
Однако, похоже, что если экземпляр класса явно не создан, typescript полностью оптимизирует объявление.
Это создает проблему с моим вариантом использования, поскольку я пытаюсь динамически создать экземпляр класса сообщений на основе метаданных, хранящихся в декораторе.
Stackblitz:https://stackblitz.com/edit/typescript-yz95bc?file=index.ts
Я думал, что это будет элегантное решение, но если мне придется вручную создавать экземпляры каждого класса (а затем выбрасывать их), чтобы заставить Typescript включить класс, это станет намного менее элегантно.
Есть ли другой способ заставить Typescript включить оформление класса?
Ответ №1:
Как и предполагалось, операторы импорта исключаются Typescript, поскольку он считает их неиспользуемыми.
Исправление заключается в импорте классов с помощью импорта побочных эффектов.
Итак, вместо import { MessageOne } from './MessageOne'
вы делаете import './MessageOne';
Stackblitz:https://stackblitz.com/edit/typescript-ifb6v6?file=index.ts
Комментарии:
1. На случай, если вы ищете официальный ответ: typescriptlang.org/docs/handbook /…