
.l-main-section
  h2(class="function export") Class

  
  pre.prettyprint
    code.
      Class(clsDef: ClassDefinition) : Type
  

  p.location-badge.
    exported from <a href='../core'>angular2/core</a>
    defined in <a href="https://github.com/angular/angular/tree/2.0.0-alpha.37/modules/angular2/src/core/util/decorators.ts#L119-L226">angular2/src/core/util/decorators.ts (line 119)</a>

  :markdown
    Provides a way for expressing ES6 classes with parameter annotations in ES5.
    
    ## Basic Example
    
    ```
    var Greeter = ng.Class({
      constructor: function(name) {
        this.name = name;
      },
    
      greet: function() {
        alert('Hello ' + this.name + '!');
      }
    });
    ```
    
    is equivalent to ES6:
    
    ```
    class Greeter {
      constructor(name) {
        this.name = name;
      }
    
      greet() {
        alert('Hello ' + this.name + '!');
      }
    }
    ```
    
    or equivalent to ES5:
    
    ```
    var Greeter = function (name) {
      this.name = name;
    }
    
    Greeter.prototype.greet = function () {
      alert('Hello ' + this.name + '!');
    }
    ```
    
    ## Example with parameter annotations
    
    ```
    var MyService = ng.Class({
      constructor: [String, [new Query(), QueryList], function(name, queryList) {
        ...
      }]
    });
    ```
    
    is equivalent to ES6:
    
    ```
    class MyService {
      constructor(name: string, @Query() queryList: QueryList) {
        ...
      }
    }
    ```
    
    ## Example with inheritance
    
    ```
    var Shape = ng.Class({
      constructor: (color) {
        this.color = color;
      }
    });
    
    var Square = ng.Class({
      extends: Shape,
      constructor: function(color, size) {
        Shape.call(this, color);
        this.size = size;
      }
    });
    ```
    
    


