title: TypeScript: add more data to enum
body: <p>In TypeScript, is it possible to add more stuff (properties, methods, etc.) to enum constants, like in Java?</p>
  
  <p>Java example demonstrating adding of fields, methods and constructor:</p>
  
  <pre><code>public enum Planet {
      MERCURY (3.303e+23, 2.4397e6),
      VENUS   (4.869e+24, 6.0518e6),
      EARTH   (5.976e+24, 6.37814e6),
      MARS    (6.421e+23, 3.3972e6),
      JUPITER (1.9e+27,   7.1492e7),
      SATURN  (5.688e+26, 6.0268e7),
      URANUS  (8.686e+25, 2.5559e7),
      NEPTUNE (1.024e+26, 2.4746e7);
  
      private final double mass;   // in kilograms
      private final double radius; // in meters
  
      Planet(double mass, double radius) {
          this.mass = mass;
          this.radius = radius;
      }
      private double mass() { return mass; }
      private double radius() { return radius; }
  
      // universal gravitational constant  (m3 kg-1 s-2)
      public static final double G = 6.67300E-11;
  
      double surfaceGravity() {
          return G * mass / (radius * radius);
      }
      double surfaceWeight(double otherMass) {
          return otherMass * surfaceGravity();
      }
      // ...
  }
  </code></pre>