/ / Cách sử dụng không gian tên trong TypeScript

Cách sử dụng không gian tên trong TypeScript

How to Set Up TypeScript in Node

Xung đột đặt tên xảy ra khi hai hoặc nhiều thành phần mã sử dụng cùng tên cho một biến, hàm hoặc lớp. Chúng phổ biến trong các dự án lớn, nơi nhiều người làm việc trên cùng một cơ sở mã. Chúng có thể gây khó khăn cho việc xác định thành phần mã nào chịu trách nhiệm về lỗi.


Sử dụng không gian tên, bạn có thể tổ chức và quản lý mã của mình sao cho các nhóm thành phần liên quan nằm dưới một mã định danh chung. Điều này sẽ giảm thiểu rủi ro đặt tên xung đột.


Tạo một không gian tên

Bạn có thể tạo không gian tên trong TypeScript bằng cách sử dụng không gian tên từ khóa. Theo sau nó với một mã định danh để đặt tên cho không gian tên và một khối được bao quanh bởi dấu ngoặc nhọn. Cú pháp tương tự như cú pháp bạn sẽ sử dụng để tạo một lớp trong JavaScript.

Ví dụ:

 namespace Example {}

Sau đó, bạn có thể khai báo các thành viên của không gian tên—biến, hàm và lớp—trong khối không gian tên:

 namespace Example {
  export function Foo(): void {
    console.log("This is a function inside the Example namespace");
  }

  export class Bar {
    property: string;

    constructor(property: string) {
      this.property = property;
    }
  }

  export const baz = "This is a namespace variable"
}

Trong ví dụ trên, foo, Quán babaz là thành viên của Ví dụ không gian tên. Theo mặc định, bạn chỉ có thể truy cập các thành viên của một không gian tên bên trong cùng một không gian tên đó. Sử dụng xuất khẩu từ khóa để làm cho mỗi thành viên của không gian tên có thể truy cập được bên ngoài nó.

Bạn có thể truy cập tất cả các thành viên có sẵn công khai của một không gian tên bằng cách gọi tên thành viên của không gian tên bằng cách sử dụng ký hiệu dấu chấm:

 Example.foo(); 

const bar = new Example.Bar("string");
console.log(bar.property);

console.log(Example.baz);

Không gian tên lồng nhau

TypeScript cho phép bạn lồng các không gian tên trong các không gian tên khác để tạo cấu trúc phân cấp cho mã của bạn. Việc lồng các không gian tên có thể làm giảm hơn nữa nguy cơ xung đột đặt tên bằng cách nhóm các không gian tên có liên quan dưới một mã định danh chung.

Ví dụ:

 namespace Example {
  export const property_1 = "Foo";

  export namespace Bar {
    export const printFoo = function () {
      console.log(property_1);
    };
  }

  export namespace Baz {
    export class Foo {
      property: string;

      constructor(property: string) {
        this.property = property;
      }
    }
  }
}

Khối mã ở trên cung cấp một ví dụ về không gian tên lồng nhau. Các Ví dụ không gian tên là không gian tên cấp cao nhất, chứa Quán ba không gian tên và Baz không gian tên.

Bạn có thể truy cập các thuộc tính trong một không gian tên lồng nhau bằng cách sử dụng ký hiệu dấu chấm tuân theo cấu trúc phân cấp mà bạn đã tạo.

Ví dụ:

 console.log(Example.property_1); 
Example.Bar.printFoo()
const foo = new Example.Baz.Foo("example")

Mã ví dụ này truy cập từng thành viên của không gian tên thông qua không gian tên cha. Truy cập trực tiếp một thuộc tính, thay vì thông qua không gian tên cha của nó, sẽ gây ra lỗi:

 Example.printFoo()

Mặc dù các không gian tên lồng nhau có thể giúp bạn sắp xếp mã của mình, nhưng các không gian tên lồng sâu có thể tạo ra tác dụng ngược lại. Các không gian tên được lồng sâu khiến mã của bạn khó đọc và khó bảo trì hơn.

Bí danh không gian tên

Bí danh không gian tên là tên rút gọn được đặt cho thành viên không gian tên, giúp dễ dàng tham chiếu hơn.

Bạn có thể tạo bí danh không gian tên bằng cách sử dụng nhập khẩu từ khóa theo sau là tên bạn muốn gán cho bí danh. Sau đó, gán các nhập khẩu từ khóa và tên bí danh cho một thành viên không gian tên.

Ví dụ:

 namespace Car {
  export namespace Tesla {
    export class ModelX {
      create(): String {
        return `Model X Created`
      }
    }
  }

  export namespace Toyota {
     export class Camry {}
  }

  export namespace Ford {
    export class Mustang {}
  }
}


import tesla = Car.Tesla

const modelX = new tesla.ModelX()
modelX.create()

Ví dụ này tạo bí danh cho Xe hơi.Tesla không gian tên. Bạn có thể sử dụng bí danh này để truy cập các thuộc tính của Tesla không gian tên, như lớp ModelX, dễ dàng hơn.

Sử dụng không gian tên trong nhiều tệp

Để sử dụng một không gian tên trong một tệp khác, bạn phải nhập nó. Nhập không gian tên khác với nhập biến, hàm, lớp, v.v. Tùy thuộc vào hệ thống mô-đun của dự án, bạn có thể nhập chúng bằng cách sử dụng yêu cầu hoặc là nhập khẩu từ khóa.

Tuy nhiên, bạn chỉ có thể nhập các không gian tên bằng cách sử dụng chỉ thị dấu gạch chéo ba, đây là nhận xét một dòng có chứa thẻ XML.

Ví dụ:

 


Example.foo()

Ví dụ này sử dụng chỉ thị gạch chéo ba bên trong một chính.ts tài liệu. Chỉ thị tham khảo các chỉ số.ts tập tin, trong đó có các Ví dụ không gian tên. Nếu không nhập, không gian tên chỉ khả dụng trong cùng một tệp xác định nó.

Sau khi tham khảo các chỉ số.ts tập tin, bạn có thể truy cập vào Ví dụ không gian tên và các thành viên có sẵn công khai của nó. Chẳng hạn, bạn có thể gọi foo phương pháp trên Ví dụ không gian tên.

Sau khi sử dụng nhiều tệp, bạn cần đảm bảo rằng TypeScript biên dịch và tải tất cả mã cần thiết. Bạn có thể làm như vậy bằng cách nối đầu ra từ trình biên dịch TypeScript bằng cách sử dụng ra tập tin lựa chọn. Điều này sau đó sẽ biên dịch tất cả các tệp đầu vào thành một tệp đầu ra JavaScript duy nhất. Cú pháp chung để chạy trình biên dịch như thế này là:

 tsc --outFile <JAVASCRIPT_FILE> <TYPESCRIPT_FILE>

Thay thế với tên của tệp JavaScript mục tiêu của bạn. Thay thế với tên của tệp TypeScript chứa chỉ thị dấu gạch chéo ba.

Ví dụ:

 tsc --outFile index.js main.ts

Lệnh này sẽ biên dịch nội dung của chính.ts tệp, cùng với tất cả các tệp được tham chiếu bởi chỉ thị dấu gạch chéo ba lần, vào index.js tài liệu.

Ngoài ra, bạn có thể chỉ định từng tệp riêng lẻ:

 tsc --outFile <JAVASCRIPT_FILE> <TYPESCRIPT_FILE_1> <TYPESCRIPT_FILE_2>

Điều quan trọng cần lưu ý là chỉ thị ba dấu gạch chéo chỉ hợp lệ khi được khai báo ở đầu tệp. Nếu bạn cố gắng sử dụng nó ở bất kỳ nơi nào khác, TypeScript sẽ coi nó như một nhận xét một dòng thông thường không có ý nghĩa đặc biệt.

Bạn nên sử dụng không gian tên hoặc mô-đun?

Mặc dù các không gian tên không được dùng nữa, nhưng việc tổ chức và quản lý mã của bạn bằng các mô-đun ES6 thường được khuyến nghị. Các mô-đun dễ bảo trì và quản lý hơn và bạn có thể mở rộng chúng trên nhiều tệp.

Ngoài ra, bạn có thể chỉ định mối quan hệ giữa các mô-đun về mặt nhập và xuất ở cấp độ tệp. Không gian tên không thể xác định các phụ thuộc của chúng.

Cuối cùng, sự lựa chọn giữa không gian tên và mô-đun sẽ phụ thuộc vào nhu cầu và yêu cầu cụ thể của dự án của bạn, vì cả hai đều cung cấp một cách có giá trị để tổ chức và quản lý mã trong TypeScript.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *