Như được nêu trong TS-handbook có 2 loại mô-đun: "nội bộ" & "bên ngoài". Mã trong mô-đun bên trong được viết bằng Loại và chữ "bên ngoài" được viết bằng Javascript.
Để phù hợp với thuật ngữ ECMAScript 2015 mới của họ đã quyết định đổi tên họ như sau:
- 'module nội bộ' là bây giờ 'namespace'.
- "module bên ngoài" bây giờ chỉ đơn giản là "module", như để phù hợp với ECMAScript
Vì vậy:
- Cách bạn viết mã của bạn là khác nhau
- Khi sử dụng module các lớp học không được hiển thị trong phạm vi toàn cầu, trong khi sử dụng các không gian tên:
Ví dụ:
Giả sử bạn có chuỗi không gian tên công khai NamespaceA.NamespaceB.NamespaceC
hiển thị lớp công khai ClassD
. Bạn có thể truy cập vào tất cả các trên toàn cầu theo cách này:
window.NamespaceA
window.NamespaceA.NamespaceB
window.NamespaceA.NamespaceB.NamespaceC
window.NamespaceA.NamespaceB.NamespaceC.ClassD
mà không nói window.NamespaceA = NamespaceA
và nếu bạn sử dụng các module bạn phải sử dụng "ma thuật" ở trên
Nguồn
2017-01-25 08:47:32
[Namespaces và Modules] (https: //github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Namespaces%20and%20Modules.md) –
Khi tôi hiểu nó không gian tên được sử dụng để được gọi là "mô-đun" và đến trong TypeScript trước khi ECMAScript đã đưa ra một tiêu chuẩn mô-đun. Bây giờ ES có một mô-đun tiêu chuẩn TS đổi tên thành "mô-đun" thành "không gian tên" và thêm hỗ trợ cho các mô-đun ES. Tôi không nghĩ có bất kỳ lý do thực sự nào để sử dụng không gian tên phía trước. – Aaron
Đọc "Không gian tên và mô-đun" từ @Nitzan Tomer làm tôi bối rối hơn. Vì vậy, bạn có nghĩ rằng tôi phải chỉ sử dụng các mô-đun? –