TypeScript - Enums: Обзор и когда не надо использовать

  Рет қаралды 15,200

PurpleSchool | Anton Larichev

PurpleSchool | Anton Larichev

Күн бұрын

Мы с вами рассмотрим зачем нужны enums в TypeScript и во что они компилируются. А что самое главное - когда их можно использовать, а когда нет.
Полный курс по TypeScript: purpleschool.r...
Все мои курсы: purpleschool.ru/
Telegram канал с полезными советами: t.me/purple_co...

Пікірлер: 30
@JoelMiller-z1x
@JoelMiller-z1x 7 ай бұрын
спасибо, какой вы спокойный мужик. похвально. спокойно объясняете
@PurpleSchool
@PurpleSchool 7 ай бұрын
Спасибо)
@АлександрЕлагин-м2ю
@АлександрЕлагин-м2ю 2 жыл бұрын
спасибо за видео, надеюсь видео будут выходить чаще чем статьи на сайте
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Буду стараться делать хотя бы 1 в неделю. Видео проще записывать мне)
@ViamoX
@ViamoX 2 жыл бұрын
6:34 - у нас не появилась константа ADMIN, а она уже была в ts в строке 5 (6:21), к тому же она ADMIN, а не Admin
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Верно, оговорился
@АндрейК9-я3ч
@АндрейК9-я3ч 2 жыл бұрын
​ @Anton Larichev жаль что не сказал про Union , мне кажется что интереснее сравнить Enum и Union. А про то , что бизнес логику нужно хранить на беке и так понятно )
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Можно рассмотреть в отдельном видео)
@СергейКозлов-н1л
@СергейКозлов-н1л 2 жыл бұрын
Если честно, не очень понял кейс про то, что enum могут дополняться в дальнейшем и его лучше в таком случае не юзать. Даже если мы будем тянуть значения из базы, к примеру роли, данное значение с сервера все равно нужно типизировать и в любом случае придется править/дополнять описанный тип ранее, пускай даже если он будет обозначен как Union, type Data = {...anything, role: 'admin' | 'user'}
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Если от этого значения зависит бизнес логика - да. Но если у вас просто выходит сотрудник и нужно его добавить для, скажем, отображения - править код не надо и это экономия. Так же в микросервисах если нужно изменить логику можно изменить в 1-м месте, вместо того, чтобы публиковать для всех новый enum и обновлять все микросервисы по цепочке.
@hotsavage66
@hotsavage66 2 жыл бұрын
Что лучше использовать enum или литеральный тип? Например, у нас есть тип type UserRoles = ‘admin’ | ‘user’ и enum UserRoles {admin, user} и создаётся тип пользователя type User = {name: string, role: ??? }. В этом случае лучше enum или type? При проверке в обоих случаях ts выдаёт ошибку, если правая часть содержит ошибку
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Enum хороши, когда мы хотим придать смысл значение. Если admin ещё можно понять что относится к роли (да и то только при наведении на тип), то к примеру BYN не сразу очевидно, что это валюта, а Currency.BYN даёт сразу понимание контекста. Особенно это видно с числовыми enum. А так можно использовать и то и то.
@aleksandrmatyka3118
@aleksandrmatyka3118 2 жыл бұрын
Оу, а разве нельзя написать просто вот так? const user = { name: 'admin; } as const
@dianov7874
@dianov7874 2 жыл бұрын
Антон: просто спасибо ваМ)
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Пожалуйста)
@lirrr6555
@lirrr6555 2 жыл бұрын
Выглядит так, будто я могу не использовать enum вовсе, а предпочитать ему перечисление в типе строковых литералов. Буду ли я в этом не прав?
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Можно вообще не использовать, но он даёт хорошую читабельность для числовых значениях. Для строк строковые литералы подойдут вполне.
@alexandrkudryashov7170
@alexandrkudryashov7170 2 жыл бұрын
а userRole не может разве расшириться? Если например ролевка будет модфицироваться/меняться в зависимости от появления нового сотрудника?
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Могу меняться, но при добавлении роли нам всё равно придётся менять логику проверки роли и где она используется, поэтому при добавлении новой роли нам нужно будет в любом случаем лезть в код.
@true227
@true227 Жыл бұрын
вроде бы const enum в официальной доке TS советуют не использовать совсем
@ЕвгенийЛисицын-ь7т
@ЕвгенийЛисицын-ь7т Жыл бұрын
Только начал изучать TS и не совсем понимаю, чем отличается enum от простого массива при условии, что в enum мы значения не меняем и они остаются по умолчанию 0,1,2...n?
@PurpleSchool
@PurpleSchool Жыл бұрын
Мы может задать любые значения и обращаться не по индексу, а по имени enum
@sergeyvp
@sergeyvp 2 жыл бұрын
А вот так нельзя просто написать? Без ТС. const users = { admin: 0, user: 1, }; const users2 = { admin: "admin", user: "user", };
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Без TS все можно написать, ведь TS транспилируется у JS.
@dimitriy8689
@dimitriy8689 7 ай бұрын
не совсем понятно, пошел искать дальше
@DFront-t5f
@DFront-t5f 2 жыл бұрын
Как для технического директора и профессионального разработчика, достаточно слабо прикрыть слова "Не использовать!" таким аргументом. Без обид, думаю это повод тебе копнуть глубже.
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Не очень понял сформулированное утверждение.
@biLLie_wiLLie
@biLLie_wiLLie 2 жыл бұрын
Краткое содержание видео - не используйте enum)
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Не совсем) Если у вас монолит и есть перечисления, которые могут меняться только при изменении бизнес требований, это хороший кандидат на enum)
@CJIu3eHb
@CJIu3eHb Жыл бұрын
@@PurpleSchool А если куча сервисов - то может надо его просто вынести в shared библиотеку?
Enums considered harmful
9:23
Matt Pocock
Рет қаралды 206 М.
The joker favorite#joker  #shorts
00:15
Untitled Joker
Рет қаралды 26 МЛН
The TRUTH About TypeScript Enums
12:04
James Q Quick
Рет қаралды 7 М.
How to use TypeScript Enums and why not to, maybe
12:43
Andrew Burgess
Рет қаралды 19 М.
Why use Type and not Interface in TypeScript
14:12
ByteGrad
Рет қаралды 206 М.
What Are *.d.ts files? How to Use *.d.ts Files in TypeScript?
5:49
Maksim Ivanov
Рет қаралды 81 М.
TypeScript - Быстрый Курс за 70 минут
1:08:00
Владилен Минин
Рет қаралды 633 М.
React JS c Нуля - Курс для начинающих БЕЗ ВОДЫ [2024]
3:42:01
Владилен Минин
Рет қаралды 318 М.
Конфигурация для TypeScript - tsconfig.json
27:58
Михаил Непомнящий
Рет қаралды 16 М.
The joker favorite#joker  #shorts
00:15
Untitled Joker
Рет қаралды 26 МЛН