title: Why forEach does not exist on NodeListOf
body: <p>My code:</p>
  
  <pre><code>    var checkboxes = this.element.querySelectorAll("input[type=checkbox]") as NodeListOf&lt;HTMLInputElement&gt;;
      checkboxes.forEach(ele =&gt; {
          var key = ele.name;
          if (data.hasOwnProperty(key)) {
              if (!this.isArray(data[key])) {
                  var temp = data[key];
                  data[key] = [temp];
              }
          } else {
              data[key] = [];
          }
      });
  </code></pre>
  
  <p>But I got an error:</p>
  
  <blockquote>
    <p>error TS2339: Property 'forEach' does not exist on type
    'NodeListOf'.</p>
  </blockquote>
  
  <pre><code>interface NodeListOf&lt;TNode extends Node&gt; extends NodeList {
      length: number;
      item(index: number): TNode;
      [index: number]: TNode;
  }
  
  interface NodeList {
      /**
       * Returns an array of key, value pairs for every entry in the list
       */
      entries(): IterableIterator&lt;[number, Node]&gt;;
      /**
       * Performs the specified action for each node in an list.
       * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list.
       * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
       */
      forEach(callbackfn: (value: Node, index: number, listObj: NodeList) =&gt; void, thisArg?: any): void;
      /**
       * Returns an list of keys in the list
       */
      keys(): IterableIterator&lt;number&gt;;
  
      /**
       * Returns an list of values in the list
       */
      values(): IterableIterator&lt;Node&gt;;
  
  
      [Symbol.iterator](): IterableIterator&lt;Node&gt;;
  }
  </code></pre>
  
  <p>'NodeListOf' inherit from 'NodeList',and 'NodeList' has 'forEach'
   method,why 'forEach' does not exist on 'NodeListOf'? </p>