Thẻ tham chiếu trong JavaScript là gì?

Chỉ thị ba dấu gạch chéo là nhận xét một dòng chứa một thẻ XML duy nhất. Nội dung của nhận xét được sử dụng làm chỉ thị của trình biên dịch

Chỉ thị ba dấu gạch chéo chỉ hợp lệ ở đầu tệp chứa chúng. Chỉ thị ba dấu gạch chéo chỉ có thể được đặt trước các nhận xét đơn hoặc nhiều dòng, bao gồm các chỉ thị ba dấu gạch chéo khác. Nếu chúng gặp phải sau một câu lệnh hoặc một tuyên bố, chúng được coi là các nhận xét một dòng thông thường và không có ý nghĩa đặc biệt

///

Chỉ thị /// là phổ biến nhất của nhóm này. Nó phục vụ như một tuyên bố về sự phụ thuộc giữa các tệp

Các tham chiếu ba dấu gạch chéo hướng dẫn trình biên dịch bao gồm các tệp bổ sung trong quá trình biên dịch

Chúng cũng phục vụ như một phương pháp để sắp xếp đầu ra khi sử dụng hoặc. Các tệp được phát ra đến vị trí tệp đầu ra theo cùng thứ tự với đầu vào sau khi vượt qua quá trình tiền xử lý

Tiền xử lý tệp đầu vào

Trình biên dịch thực hiện chuyển tiền xử lý trên các tệp đầu vào để giải quyết tất cả các chỉ thị tham chiếu ba dấu gạch chéo. Trong quá trình này, các tệp bổ sung được thêm vào quá trình biên dịch

Quá trình bắt đầu với một tập hợp các tệp gốc; . Các tệp gốc này được xử lý trước theo cùng thứ tự chúng được chỉ định. Trước khi một tệp được thêm vào danh sách, tất cả các tham chiếu dấu gạch chéo ba trong đó đều được xử lý và các mục tiêu của chúng được bao gồm. Các tham chiếu ba dấu gạch chéo được giải quyết theo cách chuyên sâu, theo thứ tự chúng đã được nhìn thấy trong tệp

Đường dẫn tham chiếu ba dấu gạch chéo được giải quyết tương ứng với tệp chứa, nếu đường dẫn tương đối được sử dụng

lỗi

Đó là một lỗi để tham khảo một tập tin không tồn tại. Đó là lỗi đối với một tệp có tham chiếu dấu gạch chéo ba đối với chính nó

Sử dụng ts///export class C {}1

Nếu cờ trình biên dịch được chỉ định, các tham chiếu ba dấu gạch chéo sẽ bị bỏ qua;

ts///export class C {}3

Tương tự như một chỉ thị /// , đóng vai trò là một tuyên bố về sự phụ thuộc, một chỉ thị

ts

/// name="NamedModule"/>

export class C {}

3 tuyên bố một sự phụ thuộc vào một gói

Quá trình giải quyết các tên gói này tương tự như quá trình giải quyết các tên mô-đun trong câu lệnh

ts

/// name="NamedModule"/>

export class C {}

6. Một cách dễ dàng để nghĩ về các chỉ thị kiểu tham chiếu ba dấu gạch chéo là một

ts

/// name="NamedModule"/>

export class C {}

6 cho các gói khai báo

Ví dụ, bao gồm

ts

/// name="NamedModule"/>

export class C {}

8 trong một tệp khai báo tuyên bố rằng tệp này sử dụng các tên được khai báo trong

ts

/// name="NamedModule"/>

export class C {}

9;

Chỉ sử dụng các chỉ thị này khi bạn đang soạn thảo một tệp

js

define("NamedModule", ["require", "exports"], function (require, exports) {

var C = (function () {

function C() {}

return C;

})();

exports.C = C;

});

0 bằng tay

Đối với các tệp khai báo được tạo trong quá trình biên dịch, trình biên dịch sẽ tự động thêm

ts

/// name="NamedModule"/>

export class C {}

3 cho bạn;

Để khai báo sự phụ thuộc vào gói

js

define("NamedModule", ["require", "exports"], function (require, exports) {

var C = (function () {

function C() {}

return C;

})();

exports.C = C;

});

3 trong tệp

js

define("NamedModule", ["require", "exports"], function (require, exports) {

var C = (function () {

function C() {}

return C;

})();

exports.C = C;

});

4, hãy sử dụng trên dòng lệnh hoặc trong

ts

/// name="NamedModule"/>

export class C {}

0 của bạn để thay thế. Xem để biết thêm chi tiết

ts/// declare var moduleA: MyType;moduleA.callStuff();1

Chỉ thị này cho phép một tệp bao gồm rõ ràng tệp lib tích hợp sẵn

Các tệp lib tích hợp được tham chiếu giống như tùy chọn trình biên dịch trong tsconfig. json (e. g. sử dụng

ts

/// path="legacy/moduleA" name="moduleA"/>

declare var moduleA: MyType;

moduleA.callStuff();

3 chứ không phải

ts

/// path="legacy/moduleA" name="moduleA"/>

declare var moduleA: MyType;

moduleA.callStuff();

4, v.v. )

Đối với các tác giả tệp khai báo dựa trên các loại tích hợp sẵn, e. g. API DOM hoặc trình xây dựng thời gian chạy JS tích hợp như

ts

/// path="legacy/moduleA" name="moduleA"/>

declare var moduleA: MyType;

moduleA.callStuff();

5 hoặc

ts

/// path="legacy/moduleA" name="moduleA"/>

declare var moduleA: MyType;

moduleA.callStuff();

6, chỉ thị lib tham chiếu ba dấu gạch chéo được khuyến nghị. Trước đây những. d. các tệp ts phải thêm các khai báo chuyển tiếp/trùng lặp của các loại đó

Ví dụ: thêm

ts

/// path="legacy/moduleA" name="moduleA"/>

declare var moduleA: MyType;

moduleA.callStuff();

7 vào một trong các tệp trong phần biên dịch tương đương với việc biên dịch với

ts

/// path="legacy/moduleA" name="moduleA"/>

declare var moduleA: MyType;

moduleA.callStuff();

8

ts

/// lib="es2017.string" />

"foo".padStart(4);

ts/// declare var moduleA: MyType;moduleA.callStuff();9

Lệnh này đánh dấu một tệp là thư viện mặc định. Bạn sẽ thấy nhận xét này ở đầu

js

define(["require", "exports", "legacy/moduleA"], function (

require,

exports,

moduleA

) {

moduleA.callStuff();

});

0 và các biến thể khác nhau của nó

Chỉ thị này hướng dẫn trình biên dịch không bao gồm thư viện mặc định (i. e.

js

define(["require", "exports", "legacy/moduleA"], function (

require,

exports,

moduleA

) {

moduleA.callStuff();

});

0) trong phần tổng hợp. Tác động ở đây tương tự như truyền vào dòng lệnh

Cũng lưu ý rằng khi vượt qua , trình biên dịch sẽ chỉ bỏ qua việc kiểm tra các tệp có

ts

/// path="legacy/moduleA" name="moduleA"/>

declare var moduleA: MyType;

moduleA.callStuff();

9

jsdefine(["require", "exports", "legacy/moduleA"], function ( require, (adsbygoogle = window.adsbygoogle || []).push({}); exports, moduleA) { moduleA.callStuff();});5

Theo mặc định, các mô-đun AMD được tạo ẩn danh. Điều này có thể dẫn đến các vấn đề khi các công cụ khác được sử dụng để xử lý các mô-đun kết quả, chẳng hạn như các gói (e. g.

js

define(["require", "exports", "legacy/moduleA"], function (

require,

exports,

moduleA

) {

moduleA.callStuff();

});

6)

Chỉ thị

js

define(["require", "exports", "legacy/moduleA"], function (

require,

exports,

moduleA

) {

moduleA.callStuff();

});

7 cho phép chuyển tên mô-đun tùy chọn tới trình biên dịch

amdModule. ts

ts

/// name="NamedModule"/>

export class C {}

Sẽ dẫn đến việc gán tên

js

define(["require", "exports", "legacy/moduleA"], function (

require,

exports,

moduleA

) {

moduleA.callStuff();

});

8 cho mô-đun như một phần của việc gọi AMD là

js

define(["require", "exports", "legacy/moduleA"], function (

require,

exports,

moduleA

) {

moduleA.callStuff();

});

9

amdModule. js
________số 8_______

/// 0

Ghi chú. chỉ thị này đã bị phản đối. Thay vào đó, hãy sử dụng câu lệnh /// 1

/// 2 thông báo cho trình biên dịch về một phụ thuộc mô-đun không phải TS cần được đưa vào lệnh gọi yêu cầu của mô-đun kết quả

Chỉ thị /// 3 cũng có thể có thuộc tính /// 4 tùy chọn;