Un barril es una forma de acumular exportaciones de varios módulos en un solo módulo de conveniencia. El barril en sí es un archivo de módulo que reexporta exportaciones seleccionadas de otros módulos.
Imagine tres módulos en una carpeta de héroes:
// heroes/hero.component.ts
export class HeroComponent {}
// heroes/hero.model.ts
export class Hero {}
// heroes/hero.service.ts
export class HeroService {}
Sin un barril, un consumidor necesitaría tres declaraciones de importación:
import { HeroComponent } from '../heroes/hero.component.ts';
import { Hero } from '../heroes/hero.model.ts';
import { HeroService } from '../heroes/hero.service.ts';
Podemos agregar un barril a la carpeta de héroes (llamado índice por convención) que exporta todos estos elementos:
export * from './hero.model.ts'; // re-export all of its exports
export * from './hero.service.ts'; // re-export all of its exports
export { HeroComponent } from './hero.component.ts'; // re-export the named thing
Ahora un consumidor puede importar lo que necesita del barril.
import { Hero, HeroService } from '../heroes'; // index is implied
Los paquetes de alcance angular tienen un barril llamado índice.