Cách viết phức hợp của nhập/xuất module

Nếu trong một module, nhập và xuất cùng một module, lệnh import và lệnh export có thể được viết cùng nhau.

Xuất toàn bộ module

Nhập toàn bộ module module, sau đó xuất toàn bộ module đó.

export * from 'module'

Xuất một phần giao diện của module

Nhập foobar từ module module, sau đó xuất hai giao diện đó.

export { foo, bar } from 'module'
 
// Có thể hiểu là
// import { foo, bar } from 'module'
// export { foo, bar }

Thực tế, cách viết này chỉ đơn giản là Xuất hai giao diện này ra bên ngoài, module hiện tại không thể sử dụng trực tiếp hai giao diện này.

Xuất với đổi tên giao diện

Đổi tên giao diện nhập từ module module, nhập giao diện foo và xuất với tên newFoo.

export { foo as newFoo } from 'module'

Xuất module mặc định

export { default } from 'module'

Xuất module đổi tên thành module có tên

export { foo as default } from './module'
 
// Tương đương với
// import { foo } from './module'
// export default foo

Xuất module mặc định thành module có tên

export { default as foo } from './module'

Trường hợp không có cách viết phức hợp tương ứng

Ba cách viết dưới đây không có cách viết phức hợp tương ứng:

  • Xuất giao diện đổi tên
  • Xuất module mặc định
  • Xuất cả module toàn bộ và một phần giao diện
// Xuất giao diện đổi tên
import * as foo from './module'
 
// Xuất module mặc định
import foo from './module'
 
// Xuất cả module toàn bộ và một phần giao diện
import foo , { namedFoo } from './module'

Để đảm bảo tính đối xứng của hình thức, hiện tại đã có đề xuất để bổ sung ba cách viết phức hợp tương ứng.

export * as foo from './module'
 
export foo from './module'
 
export foo , { namedFoo } from './module'