В этом руководстве вы познакомитесь с оператором TypeScript switch...case
.
Введение
Ниже показан синтаксис switch...case
:
switch( expression ) { case value1: // statement 1 break; case value2: // statement 2 break; case valueN: // statement N break; default: // break; }
Как это устроено:
Во-первых, switch...case
оценивает expression
.
Затем он ищет первое предложение case
, выражение которого дает то же значение, что и значение (value1
, value2
, … valueN
).
Оператор switch...case
выполнит оператор в первом предложении case
, значение которого совпадает.
Если соответствующее предложение case
не найдено, switch...case
ищет необязательное предложение default
. Если предложение default
доступно, выполняется инструкция в предложении default
.
Оператор break
, связанный с каждым предложением case
, гарантирует, что элемент управления выйдет из switch...case
после выполнения операторов в предложении case
.
Если в соответствующем предложении case нет break
, выполнение программы продолжается со следующего оператора в операторе switch...case
.
default
является последним предложением в switch...case
. Однако так быть не должно.
Примеры оператора switch case
Давайте рассмотрим несколько примеров использования оператора switch…case в TypeScript.
1) Простой пример
В следующем примере показан простой пример switch...case
, который показывает сообщение на основе целевого идентификатора:
let targetId = 'btnDelete'; switch(targetId) { case 'btnUpdate': console.log('Update'); break; case 'btnDelete': console.log('Delete'); break; case 'btnNew': console.log('New'); break; }
Выход:
Delete
В этом примере для targetId
установлено значение btnDelete
.
Оператор switch...case
сравнивает targetId
со списком значений. Поскольку targetId
соответствует 'btnDelete'
, выполняется оператор в соответствующем предложении case
.
2) Пример группового случая
Если у вас есть код, который используется несколькими делами, вы можете сгруппировать их. Например:
// change the month and year let month = 2, year = 2020; let day = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 4: case 6: case 9: case 11: day = 30; break; case 2: // leap year if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)) day = 29; else day = 28; break; default: throw Error('Invalid month'); } console.log(`The month ${month} in ${year} has ${day} days`);
Выход:
The month 2 in 2020 has 29 days
В этом примере возвращаются дни определенного месяца и года.
Если месяц равен 1,3, 5, 7, 8, 12, количество дней равно 31. Если месяц равен 4, 6, 9 или 11, количество дней равно 30. Если месяц равен 2, а год високосный, возвращается 29 дней, в противном случае возвращается 28 дней.