anchor.diff:    fact `InjectableMetadata` #{_decorator}s that
     identify a class as a target for instantiation by an injector.
   
  +  我们**可以**添加它。但是它不是必需的，因为`HerosComponent`已经有`@Component`装饰器了，这个装饰器类（和我们随后将会学到的`@Directive`和`@Pipe`一样）是<a href="#{injMetaUrl}">InjectableMetadata</a>的子类型。实际上，这个`InjectableMetadata`装饰器是把一个类标识为注入器实例化的目标。
  +
   block ts-any-decorator-will-do
     .l-sub-section
       :marked
         At runtime, injectors can read class metadata in the transpiled JavaScript code
         and use the constructor parameter type information
  -      to determine what things to inject. 
  +      to determine what things to inject.
  +
  +      在运行时，注入器可以从编译后的JavaScript代码中读取类的元数据，并使用构造函数的参数类型信息来决定注入什么。 
   
         Not every JavaScript class has metadata.
         The TypeScript compiler discards metadata by default.
  
positive.code:   We're likely to need the same logger service everywhere in our application,
    so we put it in the project's `#{_appDir}` folder, and
    we register it in the `providers` #{_array} of the metadata for our application module, `AppModule`.
  
  +makeExcerpt('app/providers.component.ts','providers-logger','app/app.component.ts (excerpt)')
  
  
negative.code:       the compiler adds the metadata to the generated JavaScript 
        for _every class with at least one decorator_.
  
        不是每一个JavaScript类都有元数据。
        TypeScript编译器默认忽略元数据。
        如果`emitDecoratorMetadata`编译器选项为`true`(在`tsconfig.json`中它应该为`true`)，
        编译器就会在生成的JavaScript中，为_每一个至少拥有一个装饰器的类添加元数据_。
  
        While any decorator will trigger this effect, mark the service class with the
        <a href="#{injMetaUrl}">InjectableMetadata</a> #{_decorator}
        to make the intent clear.
  