В последнее время я прочитал много статей, в которых выражается недовольство enum
TypeScript. В частности, мне сказали, что следующие действия были бы плохими для действий Redux:
export enum TODOS {
ADD: 'ADD',
REMOVE: 'REMOVE',
}
и вместо этого предпочитать строковые литералы:
export const ADD_TODO = 'ADD_TODO';
export const REMOVE_TODO = 'REMOVE_TODO';
Это лучшая практика, и если да, то , Почему? По моему наивному мнению, преимуществом наличия enums
было бы отсутствие коллизий и первоклассного пространства имен (например, две одинаково действующие службы, скажем, две службы базы данных, могли бы экспортировать действия CREATE_TABLE
, без необходимости удлинять имя с пространством имен для предотвращения столкновений)
Я не могу найти ссылку на сообщение в блоге, но основные принципы c были:
- Назначение любой цифры c значение для перечисления:
enum Direction {
Up,
Down,
Left,
Right,
}
const strangeWay = 27 as Direction
Конечно, не относится к строковым перечислениям
- "Последствия выполнения", из которых я не могу вспомнить приведенный аргумент , Вот сообщение Reddit , в котором говорится то же самое, но не дается никакого объяснения того, каковы значения времени выполнения, просто нужно рассмотреть больше, чем строки
РЕДАКТИРОВАТЬ : Обратите внимание, что я не ищу мнения. Я ищу последствия выбора такой модели