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

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

PurpleSchool | Anton Larichev

PurpleSchool | Anton Larichev

Күн бұрын

Пікірлер: 30
@JoelMiller-z1x
@JoelMiller-z1x 8 ай бұрын
спасибо, какой вы спокойный мужик. похвально. спокойно объясняете
@PurpleSchool
@PurpleSchool 8 ай бұрын
Спасибо)
@АлександрЕлагин-м2ю
@АлександрЕлагин-м2ю 2 жыл бұрын
спасибо за видео, надеюсь видео будут выходить чаще чем статьи на сайте
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Буду стараться делать хотя бы 1 в неделю. Видео проще записывать мне)
@АндрейК9-я3ч
@АндрейК9-я3ч 2 жыл бұрын
​ @Anton Larichev жаль что не сказал про Union , мне кажется что интереснее сравнить Enum и Union. А про то , что бизнес логику нужно хранить на беке и так понятно )
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Можно рассмотреть в отдельном видео)
@ViamoX
@ViamoX 2 жыл бұрын
6:34 - у нас не появилась константа ADMIN, а она уже была в ts в строке 5 (6:21), к тому же она ADMIN, а не Admin
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Верно, оговорился
@dianov7874
@dianov7874 2 жыл бұрын
Антон: просто спасибо ваМ)
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Пожалуйста)
@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. А так можно использовать и то и то.
@СергейКозлов-н1л
@СергейКозлов-н1л 2 жыл бұрын
Если честно, не очень понял кейс про то, что enum могут дополняться в дальнейшем и его лучше в таком случае не юзать. Даже если мы будем тянуть значения из базы, к примеру роли, данное значение с сервера все равно нужно типизировать и в любом случае придется править/дополнять описанный тип ранее, пускай даже если он будет обозначен как Union, type Data = {...anything, role: 'admin' | 'user'}
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Если от этого значения зависит бизнес логика - да. Но если у вас просто выходит сотрудник и нужно его добавить для, скажем, отображения - править код не надо и это экономия. Так же в микросервисах если нужно изменить логику можно изменить в 1-м месте, вместо того, чтобы публиковать для всех новый enum и обновлять все микросервисы по цепочке.
@true227
@true227 Жыл бұрын
вроде бы const enum в официальной доке TS советуют не использовать совсем
@aleksandrmatyka3118
@aleksandrmatyka3118 2 жыл бұрын
Оу, а разве нельзя написать просто вот так? const user = { name: 'admin; } as const
@ЕвгенийЛисицын-ь7т
@ЕвгенийЛисицын-ь7т 2 жыл бұрын
Только начал изучать TS и не совсем понимаю, чем отличается enum от простого массива при условии, что в enum мы значения не меняем и они остаются по умолчанию 0,1,2...n?
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Мы может задать любые значения и обращаться не по индексу, а по имени enum
@alexandrkudryashov7170
@alexandrkudryashov7170 2 жыл бұрын
а userRole не может разве расшириться? Если например ролевка будет модфицироваться/меняться в зависимости от появления нового сотрудника?
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Могу меняться, но при добавлении роли нам всё равно придётся менять логику проверки роли и где она используется, поэтому при добавлении новой роли нам нужно будет в любом случаем лезть в код.
@lirrr6555
@lirrr6555 2 жыл бұрын
Выглядит так, будто я могу не использовать enum вовсе, а предпочитать ему перечисление в типе строковых литералов. Буду ли я в этом не прав?
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Можно вообще не использовать, но он даёт хорошую читабельность для числовых значениях. Для строк строковые литералы подойдут вполне.
@sergeyvp
@sergeyvp 2 жыл бұрын
А вот так нельзя просто написать? Без ТС. const users = { admin: 0, user: 1, }; const users2 = { admin: "admin", user: "user", };
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Без TS все можно написать, ведь TS транспилируется у JS.
@dimitriy8689
@dimitriy8689 8 ай бұрын
не совсем понятно, пошел искать дальше
@DFront-t5f
@DFront-t5f 2 жыл бұрын
Как для технического директора и профессионального разработчика, достаточно слабо прикрыть слова "Не использовать!" таким аргументом. Без обид, думаю это повод тебе копнуть глубже.
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Не очень понял сформулированное утверждение.
@biLLie_wiLLie
@biLLie_wiLLie 2 жыл бұрын
Краткое содержание видео - не используйте enum)
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Не совсем) Если у вас монолит и есть перечисления, которые могут меняться только при изменении бизнес требований, это хороший кандидат на enum)
@CJIu3eHb
@CJIu3eHb 2 жыл бұрын
@@PurpleSchool А если куча сервисов - то может надо его просто вынести в shared библиотеку?
Enums considered harmful
9:23
Matt Pocock
Рет қаралды 210 М.
TypeScript - Union типы и TypeGuards
9:44
PurpleSchool | Anton Larichev
Рет қаралды 9 М.
the balloon deflated while it was flying #tiktok
00:19
Анастасия Тарасова
Рет қаралды 35 МЛН
Когда отец одевает ребёнка @JaySharon
00:16
История одного вокалиста
Рет қаралды 17 МЛН
Não sabe esconder Comida
00:20
DUDU e CAROL
Рет қаралды 58 МЛН
I tricked MrBeast into giving me his channel
00:58
Jesser
Рет қаралды 25 МЛН
Обзор Nestjs - лучший framework на Node.js и TypeScript
17:14
PurpleSchool | Anton Larichev
Рет қаралды 36 М.
Самые частые ошибки в TypeScript
9:41
PurpleSchool | Anton Larichev
Рет қаралды 17 М.
Java Enums Explained in 6 Minutes
5:58
Coding with John
Рет қаралды 265 М.
TypeScript Enums Explained
9:01
Software Developer Diaries
Рет қаралды 17 М.
Learn TypeScript Generics In 13 Minutes
12:52
Web Dev Simplified
Рет қаралды 276 М.
The TRUTH About TypeScript Enums
12:04
James Q Quick
Рет қаралды 7 М.
the balloon deflated while it was flying #tiktok
00:19
Анастасия Тарасова
Рет қаралды 35 МЛН