1/* 2 * Copyright (c) 2022-2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16const isTrue = true; 17switch (isTrue) { 18 case true: 19 console.log('It\'s true'); 20 break; 21 case false: 22 console.log('It\'s false') 23 break; 24} 25 26let objValue = { key: "value" }; 27 28switch (objValue) { 29 case { key: "value" }: 30 console.log("Matching object!"); 31 break; 32 default: 33 console.log("Non-matching object"); 34} 35 36let arrayValue = [1, 2, 3]; 37 38switch (arrayValue) { 39 case [1, 2, 3]: 40 console.log("Matching array!"); 41 break; 42 default: 43 console.log("Non-matching array"); 44} 45 46const isT = 'true'; 47switch (isT) { 48 case 'true': 49 console.log('It\'s true'); 50 break; 51 case 'false': 52 console.log('It\'s false') 53 break; 54} 55 56const number1 = 1; 57switch (number1) { 58 case 1: 59 console.log('It\'s 1'); 60 break; 61 case 2: 62 console.log('It\'s 2') 63 break; 64} 65 66enum Test { 67 A = 1, 68 B = 2 69} 70const test = Test.A 71switch (test) { 72 case Test.A: 73 console.log('It\'s A'); 74 break; 75 case Test.B: 76 console.log('It\'s B') 77 break; 78} 79 80const number2 = -1.1; 81switch (number2) { 82 case -1.1: 83 console.log('It\'s 1'); 84 break; 85 case 2: 86 console.log('It\'s 2') 87 break; 88} 89 90const number3 = Number.NaN; 91switch (number3) { 92 case -1.1: 93 console.log('It\'s 1'); 94 break; 95 case 2: 96 console.log('It\'s 2'); 97 break; 98} 99 100const number4 = Number.MAX_VALUE; 101switch (number4) { 102 case -1.1: 103 console.log('It\'s 1'); 104 break; 105 case 2: 106 console.log('It\'s 2'); 107 break; 108} 109 110let day:int = 2; 111let dayName = "empty"; 112switch (day) { 113 case 0: 114 dayName = "Sunday"; 115 break; 116 case 1: 117 dayName = "Monday"; 118 break; 119 case 2: 120 dayName = "Tuesday"; 121 break; 122 case 3: 123 dayName = "Wednesday"; 124 break; 125 case 4: 126 dayName = "Thursday"; 127 break; 128 case 5: 129 dayName = "Friday"; 130 break; 131 case 6: 132 dayName = "Saturday"; 133 break; 134 default: 135 dayName = "Unknown"; 136} 137 138const number01: number = 100; 139function Foo(number01: number) { 140 switch (number01) { 141 case 1: 142 console.log('It\'s 1'); 143 break; 144 case 2: 145 console.log('It\'s 2') 146 break; 147 } 148} 149Foo(number01) 150 151const num11: number = 2; 152switch (num11) { 153 case 1: { 154 console.log('One'); 155 break; 156 } 157 case 2: { 158 console.log('Two'); 159 break; 160 } 161} 162 163let num0 = 2; 164switch (num0) { 165 case 1: { 166 console.log('One'); 167 break; 168 } 169 case 2: { 170 console.log('Two'); 171 break; 172 } 173} 174 175let num00: number = 2; 176switch (num00) { 177 case 1: { 178 console.log('One'); 179 break; 180 } 181 case 2: { 182 console.log('Two'); 183 break; 184 } 185} 186 187let num1 = 0; 188switch (num1) { 189 case 0: 190 console.log('One'); 191 break; 192 default: 193 console.log('Other number'); 194} 195 1961.0 197let num111 = 1.0; 198switch (num111) { 199 case 1.0: 200 console.log('One'); 201 break; 202 case 2.0: 203 console.log('Other number'); 204} 205 206const number134 = 100; 207switch (number134) { 208 case 1: 209 console.log('It\'s 1'); 210 break; 211 case 2: 212 console.log('It\'s 2') 213 break; 214} 215 216let str11 = new String("hello"); 217switch (str11) { 218 case "hello": 219 console.log("Case 1") 220 break 221 case "world": 222 console.log("Default Case") 223} 224 225let isnum1: string | number = 1; 226switch (isnum1) { 227 case 1.1: 228 console.log('It's num'); 229 break; 230 default: 231 console.log('F'); 232} 233// 整型 5.2fail 234type sw1 = number 235 236function FunSw4(): sw1 { 237 return 1 238} 239 240switch (FunSw4()) { 241 case 1: 242 console.log('A'); 243 break; 244 default: 245 console.log('F'); 246} 247 248// 浮点 5.2fail 249type sw2 = number | string 250 251function FunSw5(): sw2 { 252 return 1.11 253} 254 255switch (FunSw5()) { 256 case 1.11: 257 console.log('A'); 258 break; 259 default: 260 console.log('F'); 261} 262 263let number7 = Math.floor(1.5); 264switch (number7) { 265 case Math.floor(1.5): 266 console.log("Case 1"); 267 break; 268 default: 269 console.log("Default case"); 270} 271switch (85 + 5.5) { 272 case 90.5: 273 console.log('A'); 274 break; 275 default: 276 console.log('F'); 277} 278const add = (a: number, b: number): number => a + b; 279const result1 = add(10, 5); 280switch (result1) { 281 case 15: 282 console.log('A'); 283 break; 284 case 14: 285 console.log('B'); 286 break; 287 default: 288 console.log('F'); 289} 290function FunSw2(): number { 291 return 1.1 292} 293 294switch (FunSw2()) { 295 case 1.1: 296 console.log('A'); 297 break; 298 default: 299 console.log('F'); 300} 301 302// 正无穷 303let number4 = Infinity; 304switch (number4) { 305 case Infinity: 306 console.log("Case 1"); 307 break; 308 default: 309 console.log("Default case"); 310} 311 312// 负无穷 313let number5 = -Infinity; 314switch (number5) { 315 case -Infinity: 316 console.log("Case 1"); 317 break; 318 default: 319 console.log("Default case"); 320} 321 322// NaN 323let number6 = NaN; 324switch (number6) { 325 case NaN: 326 console.log("Case 1"); 327 break; 328 default: 329 console.log("Default case"); 330} 331// 1.0 332let num111 = 1.0; 333switch (num111) { 334 case 1.0: 335 console.log('One'); 336 break; 337 case 2.0: 338 console.log('Other number'); 339} 340 341// let声明整型,case浮点 342let number33: number = 1; 343switch (number33) { 344 case 1.1: 345 console.log("Case 1"); 346 break; 347 case 2: 348 console.log("Case 2"); 349 break; 350 case 3: 351 console.log("Case 3"); 352 break; 353 default: 354 console.log("Default case"); 355} 356 357// const声明,整型number,有类型 358const num11: number = 2; 359switch (num11) { 360 case 1: { 361 console.log('One'); 362 break; 363 } 364 case 2: { 365 console.log('Two'); 366 break; 367 } 368} 369 370// let声明,整型number,有类型 371let num00: number = 2; 372switch (num00) { 373 case 1: { 374 console.log('One'); 375 break; 376 } 377 case 2: { 378 console.log('Two'); 379 break; 380 } 381} 382 383 384enum Direction1 { 385 North, 386 South, 387 East, 388 West 389} 390function funSE() : string | Direction1 { 391 return 'aaa' 392} 393switch (funSE()) { // 误报 394 case 'aaa': 395 console.log('aaa'); 396 break; 397 case Direction1.North: 398 console.log('aaa'); 399 break; 400 default: 401 console.log('F'); 402} 403 404 405enum H { 406 RED, 407 BLUE 408} 409function foo11(e: H) { // 误报 410 switch (e) { 411 case H.RED: 412 } 413} 414 415