Машинопись не распознает экспортированное перечисление

Я использую TypeScript 2.5.3 и Angular 5.
В отдельном файле объявлен enum, например:

export enum eUserType {
  Driver = 1,
  Passenger = 2,
  User = 3
}

И импортируйте / используйте его в другом файле ts, например:

import { eUserType } from '../CorrectFilePath/eUserType';
export class ViewsModule { 
  newVariable=eUserType.Driver;
}

Пока intellisense работает нормально, во время выполнения будет отображаться ошибка: Cannot read property 'Driver' of undefined.
Я неправильно использую enum или что?

Обновлять: Не знаю, связано это или нет. но там использовались Целевой модуль загружается лениво и класс PreloadingStrategy (объявленный в файле, отличном от файла модуля), а мой enum применялся к классу PreloadingStrategy.

Я не получаю ошибок времени выполнения с вашим кодом stackblitz.com/edit/angular-enum

Amit Chigadani 03.06.2018 21:54

Можете поделиться кодом, где используется ViewsModule?

planet_hunter 03.06.2018 22:03
Целевой модуль загружается лениво и класс PreloadingStrategy (объявленный в файле, отличном от файла модуля) используются там, а мой enum применяется к классу PreloadingStrategy.
Rzassar 03.06.2018 22:23

А с export const enum eUserType {...} работает?

Alex Szabó 03.06.2018 22:27

@Alex Szabó Yeeessss. но почему???

Rzassar 03.06.2018 22:35

@Rzassar - я не уверен, что не так с вашей настройкой, из того, что я вижу, все выглядит отлично - и я недостаточно знаком с отложенной загрузкой, чтобы сказать, но вы используете 1, 2, 3 в качестве значений перечисления может быть опущен), и export const enum не будет создавать объект и пытаться ссылаться на него, а фактически помещает значения там, где вы бы их использовали. Я думаю, что для вашего варианта использования это было бы идеально -> typescriptlang.org/docs/handbook/enums.html#const-enums

Alex Szabó 03.06.2018 22:46

@ AlexSzabó, почему бы тебе не написать это как ответ, чтобы я мог отметить это?

Rzassar 04.06.2018 08:38
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
7
4 887
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это,

euserType = eUserType;
newVariable=euserType.Driver;
Ответ принят как подходящий

Вероятно, это не поможет вам в решении текущей проблемы (ваша настройка кажется прекрасной), и я недостаточно знаком с ленивой загрузкой, чтобы сказать, но вы используете 1, 2, 3 в качестве значений перечисления (которые можно опустить) , и export const enum не будет создавать объект и пытаться ссылаться на него, а фактически помещает значения там, где вы бы их использовали. Я думаю, что для вашего варианта использования это было бы идеально: http://www.typescriptlang.org/docs/handbook/enums.html#const-enums

Другие вопросы по теме