11import  {  Component ,  computed ,  signal  }  from  '@angular/core' ; 
22
3- enum  Difficulty  { 
4-   EASY  =  'easy' , 
5-   NORMAL  =  'normal' , 
6- } 
3+ type  Difficulty  =  keyof  typeof  difficulty ; 
4+ const  difficulty  =  { 
5+   easy : 'easy' , 
6+   normal : 'normal' , 
7+ } ; 
78
8- enum  Direction  { 
9-   LEFT  =  'left' , 
10-   RIGHT  =  'right' , 
11- } 
9+ type  Direction  =  'left'  |  'right' ; 
10+ type  DirectionMap  =  {  [ key  in  Direction ] : string  } ; 
11+ const  directions : DirectionMap  =  { 
12+   left : 'left' , 
13+   right : 'right' , 
14+ } ; 
1215
1316@Component ( { 
1417  imports : [ ] , 
1518  selector : 'app-root' , 
1619  template : ` 
1720    <section> 
1821      <div> 
19-         <button mat-stroked-button (click)="difficulty.set(Difficulty.EASY )"> 
22+         <button mat-stroked-button (click)="difficulty.set('easy' )"> 
2023          Easy 
2124        </button> 
22-         <button mat-stroked-button (click)="difficulty.set(Difficulty.NORMAL )"> 
25+         <button mat-stroked-button (click)="difficulty.set('normal' )"> 
2326          Normal 
2427        </button> 
2528      </div> 
@@ -28,10 +31,8 @@ enum Direction {
2831
2932    <section> 
3033      <div> 
31-         <button mat-stroked-button (click)="direction.set(Direction.LEFT)"> 
32-           Left 
33-         </button> 
34-         <button mat-stroked-button (click)="direction.set(Direction.RIGHT)"> 
34+         <button mat-stroked-button (click)="direction.set('left')">Left</button> 
35+         <button mat-stroked-button (click)="direction.set('right')"> 
3536          Right 
3637        </button> 
3738      </div> 
@@ -53,30 +54,17 @@ enum Direction {
5354  ` , 
5455} ) 
5556export  class  AppComponent  { 
56-   readonly  Difficulty  =  Difficulty ; 
57-   readonly  difficulty  =  signal < Difficulty > ( Difficulty . EASY ) ; 
57+   readonly  difficulty  =  signal < Difficulty > ( 'easy' ) ; 
5858
59-   readonly  Direction  =  Direction ; 
6059  readonly  direction  =  signal < Direction  |  undefined > ( undefined ) ; 
6160
62-   readonly  difficultyLabel  =  computed < string > ( ( )  =>  { 
63-     switch  ( this . difficulty ( ) )  { 
64-       case  Difficulty . EASY :
65-         return  Difficulty . EASY ; 
66-       case  Difficulty . NORMAL :
67-         return  Difficulty . NORMAL ; 
68-     } 
69-   } ) ; 
61+   readonly  difficultyLabel  =  computed < string > ( 
62+     ( )  =>  difficulty [ this . difficulty ( ) ] , 
63+   ) ; 
7064
71-   readonly  directionLabel  =  computed < string > ( ( )  =>  { 
72-     const  prefix  =  'You chose to go' ; 
73-     switch  ( this . direction ( ) )  { 
74-       case  Direction . LEFT :
75-         return  `${ prefix }   ${ Direction . LEFT }  ` ; 
76-       case  Direction . RIGHT :
77-         return  `${ prefix }   ${ Direction . RIGHT }  ` ; 
78-       default :
79-         return  'Choose a direction!' ; 
80-     } 
81-   } ) ; 
65+   readonly  directionLabel  =  computed ( ( )  => 
66+     this . direction ( ) 
67+       ? `You chose to go ${ directions [ this . direction ( ) ! ] }  ` 
68+       : 'Choose a direction' , 
69+   ) ; 
8270} 
0 commit comments