title: Is @Inject really only needed for the cases when not transpiling with TS or emitDecoratorMetadata:false
body: <p>I'm reading <a href="https://blog.thoughtram.io/angular/2015/09/17/resolve-service-dependencies-in-angular-2.html" rel="nofollow noreferrer">this article</a> on <code>@Injectable</code> and <code>@Inject</code> and it has the following:</p>
  
  <blockquote>
    <p>Problem solved. In fact, this is exactly what <strong>@Inject is for when not
    transpiling with TypeScript</strong>. If we take a look at the transpiled code
    now, we see that all the needed metadata is generated (yeap
    simplified).</p>
    
    <p>...</p>
    
    <p>We can basically put any decorator on our code, as long as it’s either
    attached to the class declaration, or to the constructor parameter. In
    other words, we could remove @Inject again and use something else that
    we put on the class, because that will cause TypeScript to emit
    metadata for the constructor parameters too... Luckily, Angular comes
    with yet another decorator we can use. @Injectable is normally used
    for Dart metadata generation. It doesn’t have any special meaning in
    TypeScript-land, however, it turns out to be a perfect fit for our use
    case.</p>
  </blockquote>
  
  <p>So, is my understanding correct, that:</p>
  
  <ol>
  <li>If a class is used as injectable for other classes but is not dependent on any other class, it doesn't need neither @Injectable nor @Inject in the constructor</li>
  <li>If a class is dependent on any other class and doesn't have any decorator used on it, it requires <code>@Injectable()</code> decorator</li>
  <li>If TS is used with <code>emitDecoratorMetadata:true</code>, <code>@Inject</code> decorator is of no use</li>
  <li>If TS is not used, or used with <code>emitDecoratorMetadata:false</code>, <code>@Inject</code> is the only mechanism to specify the dependency</li>
  </ol>