• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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