title: Is there a `declare` keyword in ES6/7?
body: <p>Recently I've been studying ES6, and that lead to me using Babel a lot. Being the curious type, I started looking at the Babel Github repository to know how they built this awesome tool, and know if I can somehow contribute.</p>
  
  <p>However, I came across <a href="https://github.com/babel/babel/blob/master/lib/types.js" rel="noreferrer">this file</a>, and it has things like <code>declare class BabelNodeSourceLocation {}</code> written all over it, and the file ends with .js.</p>
  
  <p>This got me very confused, and I am now wondering whether there's a declare keyword in JavaScript that I didn't know of, or is this just a Babel-specific syntax? All my Google searches resulted in nothing.</p>
  
  <p><strong>Update:</strong>  Putting the code in the <a href="https://babeljs.io/repl/#?experimental=true&amp;evaluate=true&amp;loose=true&amp;spec=true&amp;code=declare%20class%20BabelNodeArrowFunctionExpression%20extends%20BabelNode%20%7B%0A%20%20type%3A%20%22ArrowFunctionExpression%22%3B%0A%20%20params%3A%20any%3B%0A%20%20body%3A%20BabelNodeBlockStatement%20%7C%20BabelNodeExpression%3B%0A%20%20async%3F%3A%20boolean%3B%0A%20%20returnType%3A%20any%3B%0A%7D%0A" rel="noreferrer">Babel REPL</a> resulted in nothing. Babel just ignored the code and did not produce any equivalent ES5 output. It also did not throw any error.</p>