为什么没有" t"导出默认"在Angular中推荐?

时间:2017-08-30 13:51:29

标签: angular typescript

根据Typescript documentation (section "Guidance for structuring modules")

  

如果您只导出单个类或函数,请使用export   默认

     

正如“靠近顶层出口”减少了你的摩擦   模块的消费者,引入默认导出也是如此。如果一个   模块的主要目的是容纳一个特定的导出,然后是你   应考虑将其导出为默认导出。这两者都有   导入和实际使用导入更容易。

示例:

export default class SomeType {
  constructor() { ... }
}

Angular documentation for components(例如)中,可以看到:

export class HeroListComponent implements OnInit {
  heroes: Hero[];
  selectedHero: Hero;

  constructor(private service: HeroService) { }

  ngOnInit() {
    this.heroes = this.service.getHeroes();
  }

  selectHero(hero: Hero) { this.selectedHero = hero; }
}

通常,组件或模块的主要目的是容纳一个特定的导出。那么,Angular是否有理由不使用或建议使用export default

1 个答案:

答案 0 :(得分:15)

实际原因是这不适用于AOT编译器,但它可以与JIT编译器一起使用。因此,如果您正在使用AOT(或想要继续使用它),请不要导出默认值。 另请参阅here

  

默认导出

     

AoT不允许默认导出 - 必须全部命名。

     

❌DONT:

ruby:2.3.3-alpine
     

✅DO:

import { Component } from '@angular/core';

@Component({
  template: `
    <div class="example">
      Example component!
    </div>
  `
})
export default class ExampleComponent {

}