TypeScript #3 Перечисления (Enums)

preview_player
Показать описание
#YauhenK #webDev #TypeScript

Всех приветствую в курсе «TypeScript».
В данном видеокурсе мы с вами рассмотрим возможности языка строгой типизации - TypeScript. Разберём его основные фишки и ключевые отличия от JavaScript. Изучим такие понятия, как перечисления (Enum), интерфейсы, пространства имён. Рассмотрим набор нативных утилит, которые предоставляет сам язык.

✒ Репозиторий курса:

✒ Полезные ссылки:

✒ Полный список готовых и планируемых курсов:

✒ Автор курса:

Рекомендации по теме
Комментарии
Автор

Шикарное объяснение с примерами проясняющими мезанизм работы enum! Подобное объяснение, как ведёт себя новая сущность - ключ к пониманию. Благодарю!

vadimimmel
Автор

Просто гениально!!! Спасибо. enum зашёл)))

mlhnkge
Автор

Я понимаю, что 3 года уже прошло, но всё равно оставлю это здесь.
Из данного ролика не понял, где в enum ключ, где значение, а где индекс. Полез в доки по TS. Выяснил, что ключи (key), они же константы - это значения СЛЕВА от знака присвоения, а сопряжённые с ключами значения (value) - СПРАВА от знака присвоения.

Enum по умолчанию задаётся числовым, где значение (value) первого элемента (ключа) - нуль, а далее, итерируя по ключам, их значения увеличиваются на один от ПРЕДЫДУЩЕГО значения (value), если ключу не присвоено иное.

Т.е. тут НЕТ никаких индексов, а есть пары ключ - значение. И по КЛЮЧУ Up автор тут находил ЗНАЧЕНИЕ (value) - 0, по Down - 1 и т.д. И наоборот.

Как пример можно загуглить "Get an Enum Key by Value in TypeScript". Там всё чёрным по белому объяснено:

enum Sizes {
Small = 'S',
Medium = 'M',
Large = 'L',
}

// ['Small', 'Medium', 'Large'] - вот ключи.
// ['S', 'M', 'L'] - а вот значения, НЕ ИНДЕКСЫ.

alexm
Автор

Этот комментарий создан в качестве уважения автору и для продвижения его канала.

svzegkb
Автор

вопрос такой, а если мы зададим в enum сначала просто обычные поля, а затем присвоим одному из них значение в виде строки:
enum Some {
frist,
second,
third = 'sometext',
four,
}
выдаст ошибку на four, но почему?

upthoxd
Автор

Что скажете про использование enum в redux в actiontypes?

GagikHarutyunyan_dev
Автор

почему в конце видео массив arr c ссылками на массив links объявляется без типов данных в массиве, и как правильно объявить типы здесь?

wladis
Автор

такая проблема при использовании enum в react:
создал enum

export enum Item {
topography = "ТОПОГРАФИЧЕСКАЯ КАРТА",
hydro = "ПОВЕРХНОСТЬ УРОВНЯ ПОДЗЕМНЫХ ВОД",
relief = "ПОВЕРХНОСТЬ РЕЛЬЕФА",
inds_pd = "УРОВЕНЬ ГЛУБИНЫ ГРУНТОВЫХ ВОД",
}
В другом компоненте импортирую, чтобы при изменении стейта записать выбранное значение. Затем пытаюсь получить доступ таким образом Item[state]
и вижу такую ошибку - TS7053: Element implicitly has an 'any' type because expression of type 'Item' can't be used to index type 'typeof Item'.   Property '[Item.topography]' does not exist on type 'typeof Item'.

augustcaesar
Автор

3:27 что это вообще за чёрная магия вне Хогвардса?

simplewebdev
Автор

А почему бы везде не писать const enum?

_Yaroslav
Автор

то есть enum это как обычный объект с ключами в javscript и данные генерируются лишь когда нужны?

AskarZhaanbaev-kzdo
Автор

Можем ли использовать enum как в php?

т.е. в php enum можем использовать как тип для параметра метода или функции

enum BarEnum: int
{
case ONE = 1;
case TWO = 2;
}

function foo (BarEnum $enum) {
$enum->value; // 1 или 2
}

foo(BarEnum::ONE);

или

$enum = BarEnum::tryFrom(1); // == BarEnum::ONE
foo($enum);

Можем ли сделать такую штуку в TypeScript?

Тут мы точно знаем что функция foo будет принимать только числа 1 и 2

firdavs.ibodullayev
Автор

Почему просто не создать тогда объект или массив? В чем профит?

iGotton
Автор

use strict а потом сразу var айяяй ))) чего не const

ringnull
Автор

Просто вопрос: а зачем енамить объект линкс? Мы что к объекту обращается links.vk, что к енам links.vk. Только из-за возможности обратиться по индексу?

TarasovFrontDev