概要: このチュートリアルでは、TypeScriptのswitch...case
文について学びます。
TypeScript switch case文の紹介
以下にswitch...case
文の構文を示します。
switch ( expression ) {
case value1:
// statement 1
break;
case value2:
// statement 2
break;
case valueN:
// statement N
break;
default:
//
break;
}
Code language: JavaScript (javascript)
動作原理
まず、switch...case
文はexpression
(式) を評価します。
次に、その値(value1
、value2
、…valueN
)と等しい値を持つcase
節を最初に検索します。
switch...case
文は、値が一致する最初のcase
節の文を実行します。
一致するcase
節が見つからない場合、switch...case
文はオプションのdefault
節を探します。default
節があれば、その節の文を実行します。
各case
節に関連付けられたbreak
文は、case
節内の文の実行が完了すると、switch...case
文から制御が抜けることを保証します。
一致するcase節にbreak
文がない場合、プログラムの実行はswitch...case
文の次の文から継続されます。
慣例として、default
節はswitch...case
文の最後の節です。ただし、必ずしもそうである必要はありません。
TypeScript switch case文の例
switch...case
文の使用例をいくつか見てみましょう。
1) シンプルなTypeScript switch caseの例
次の例は、ターゲットIDに基づいてメッセージを表示するシンプルな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;
}
Code language: JavaScript (javascript)
出力
Delete
この例では、targetId
はbtnDelete
に設定されています。
switch...case
文は、targetId
と値のリストを比較します。targetId
が'btnDelete'
と一致するため、対応するcase
節の文が実行されます。
2) caseのグループ化の例
複数のcaseで共有されるコードがある場合は、それらをグループ化できます。例えば
// 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`);
Code language: JavaScript (javascript)
出力
The month 2 in 2020 has 29 days
この例は、特定の月と年の日数を返します。
月が1、3、5、7、8、または12の場合、日数は31日です。月が4、6、9、または11の場合、日数は30日です。
月が2で、年が閏年の場合、29日、そうでなければ28日になります。