Я пытаюсь получить доступ к перечислениям, написанным в файле машинописных файлов, как с сервера, так и с клиента. Файл называется SocketEndpoints.ts
и содержит enum SocketMessages
.
enum SocketMessages{
CONNECTION_SUCCESSFUL
}
Я могу вызвать перечисление с клиентской стороны, используя теги ссылок на машинописи. Однако использование только эталонного тега со стороны сервера (и не использование какого-либо импорта/запроса) приводит к ошибке:
message: endPointModule.SocketMessages.CONNECTION_SUCCESSFUL
^
TypeError: Cannot read property 'CONNECTION_SUCCESSFUL' of undefined
Как уже упоминалось в одном из приведенных ниже ответов, я должен использовать оператор import/require в серверной программе, которая работает на NodeJS и "экспортирует" перечисление. Однако использование ключевого слова "экспорт" приводит к тому, что перечисление недоступно для клиента. Пожалуйста, помогите мне выяснить способ, чтобы это перечисление было общедоступным с сервера и клиента с простотой. Я бы предпочел использовать только теги ссылок.
Как показано в ответе на этот вопрос:
stackoverflow.com/questions/14659996/reference-tag-pollutes-modules-using-typescript
Компилятор машинописного текста должен пересекать все указанные файлы и включать его код в скомпилированный вывод javascript. Но выход javascript для серверных программ, похоже, не имеет такого.
Вы не можете смешивать и сопоставлять ссылочные теги с файлами реализации с директивами import
(подумайте о том, что происходит во время выполнения JavaScript - что загружает этот скрипт? Nothing.).
Поместите export
перед enum
и используйте import
/require
для загрузки SocketIoEndpoints.ts
.