Facebook
From Buff Kitten, 7 Years ago, written in ECMAScript.
Embed
Download Paste or View Raw
Hits: 254
  1. type AActionType = 'AAction';
  2. const AActionType: AActionType = 'AAction';
  3.  
  4. type BActionType = 'BAction';
  5. const BActionType: BActionType = 'BAction';
  6.  
  7. type CActionType = 'CAction';
  8. const CActionType: CActionType = 'CAction';
  9.  
  10. interface Person{
  11.     name: string;
  12.     age: number;
  13.     height: number;
  14. }
  15.  
  16. interface Action{
  17.     $name;
  18. }
  19.  
  20. interface AAction extends Action{
  21.     $name: AActionType;
  22.     aProp: number;
  23. }
  24.  
  25. interface BAction extends Action{
  26.     $name: BActionType;
  27.     bProp: string;
  28. }
  29.  
  30. interface CAction extends Action{
  31.     $name: CActionType;
  32.     cProp: Person;
  33. }
  34.  
  35. type Actions = AAction | BAction | CAction;
  36.  
  37. function handleAction(action: Actions){
  38.     if (action.$name === CActionType){
  39.         action.cProp.name;
  40.     }
  41. }