Глобальное перечисление Typescript, которое вставляется при компиляции - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть enum, который используется почти везде в моем проекте.Я не хочу импортировать его в каждый файл.Есть ли способ определить enum в файле .d.ts, чтобы он был встроен при компиляции в js?

в моем файле types/global.d.ts, который я пробовал

declare enum MessageType {
    DIRECT = 'direct',
    FORWARDED = 'forwarded'
}

Когда я запускаюприложение я получаю MessageType.DIRECT is not defined ошибку где-то в моем коде, где я пытаюсь использовать его.Я никогда не импортировал это перечисление, потому что tslint распознает его и работает автозаполнение.

Я также пробовал declare const enum ... с тем же эффектом.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Ключевое слово declare указывает, что связанная функция, класс и т. Д. Определены в другом месте, и TSC не должен выдавать какой-либо код времени выполнения для объекта.

Я бы порекомендовал либо поместить это в какой-нибудь файл машинописного текста, либочем файл декларации (.d.ts) и удаление declare или включение какого-либо эквивалентного кода, который будет использоваться во время выполнения в файле .js.

0 голосов
/ 26 февраля 2019

Используя declare, вы создали окружающее перечисление, что означает, что вы определяете форму существующего объекта, так что это просто генерация типов, а не фактический объект.

Если выудалите declare, это создаст как тип для перечисления, так и объект

https://www.typescriptlang.org/docs/handbook/enums.html содержит более подробную информацию о окружающих перечислениях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...