Почему импортированные перечисления TypeScript не определены, но работают при назначении переменной - PullRequest
0 голосов
/ 21 июня 2020

Есть много вопросов, связанных с таким поведением, но ответы дают лишь несколько обходных путей без объяснения , почему это не работает - или почему обходной путь помогает, если на то пошло.

Когда я экспортирую и импортирую перечисление, само перечисление равно undefined, но когда я назначаю его переменной, оно будет работать. Мне это кажется совершенно безумным и не интуитивным.

Перечисление экспортируется как

export enum SkillType {
  action = 'action',
  language = 'language',
  knowledge = 'knowledge',
}

В моем Vue компоненте у меня есть следующая функция:

import { SkillType } from '@/model';

isLanguageSkill(skill: CharacterSkill) {
  return skill.type === SkillType.language;
}

Это не работает, потому что, как я обнаружил через отладчик, SkillType это undefined. Но когда я меняю код на

import { SkillType } from '@/model';

skillType = SkillType;

isLanguageSkill(skill: CharacterSkill) {
  return skill.type === this.skillType.language;
}

, все работает как положено. Что здесь происходит?!

Обновление: я использую Webpack с конфигурацией, сгенерированной Vue CLI. Так как там много всего, я не публикую его полностью, вы можете найти его по адресу https://github.com/milgner/sr6-character-sheet, если вам интересно.

...