Как лучше оформлять и использовать перечисления и типы в ts?
По вводным: при написание имени перечисления, я заискал в поиске, как его правильно оформить, пишут разное, использовать для перечислений "Screaming Snake Case" (ENUMПо вводным:), использовать множественное числоEnumsПо вводным:, использовать обычное название Enum, но писать тип в формате EnumType или TEnum. Но чаще встречается вариант с использованием одного и того же имени Enum в обоих случаях.
По вводным: в качестве примера, создал 2 файла, один с перечислением и типами другой с использованием этих сущностей.
// types.ts export const Enum = { a: 'a', b: 'b', } as const; export type Enum = typeof Enum[keyof typeof Enum];
// functions.ts import { Enum } from './test.js'; function fn(areas: Enum): Enum { switch (areas) { case Enum.a: return Enum.a; case Enum.b: default: return Enum.b; } }
Нужно понять: какие форматы названий используете вы? А если там еще интерфейс, то писать IEnum? А если схема из zod, то писать EnumSchema? Тогда почему I идет вначале, а Schema в конце?
export const Enum = { a: 'a', b: 'b', } as const; export const EnumSchema = z.enum(Enum);
Нужно понять: и вопрос по zod, если планируется его использовать в проекте и в других местах, то нормально ли писать сразу так?
// export type Enum = typeof Enum[keyof typeof Enum]; export type Enum = z.infer<typeof Enum>;
P.S. Используюconst as const, т.к:
НаПо вводным: tSConf 2020: TalkScript with the TypeScript TeamСейчас ситуация такая: создателями TS было сказано примерно следующее: - вам следует избегать перечислений в TypeScript. Они являются ошибкой языка (как отметили создатели), поскольку противоречат целям TypeScript как системы типов и не вносят дополнительных функций во время выполнения. Мы также глубоко верим в обратную совместимость. Мы никогда не отменим то, что уже внедрили.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос