Tôi đã thấy các bài đăng liên quan đến nơi đặt dòng "sử dụng nghiêm ngặt" trong tệp mã TypeScript. Câu hỏi của tôi là, tại sao có nó ở tất cả?
Vì TypeScript đã là một ngôn ngữ được gõ mạnh, nên "sử dụng nghiêm ngặt" thêm gì?
"use strict";
Tôi đã thấy các bài đăng liên quan đến nơi đặt dòng "sử dụng nghiêm ngặt" trong tệp mã TypeScript. Câu hỏi của tôi là, tại sao có nó ở tất cả?
Vì TypeScript đã là một ngôn ngữ được gõ mạnh, nên "sử dụng nghiêm ngặt" thêm gì?
"use strict";
Câu trả lời:
Cập nhật
"use strict";được phát ra trong các mô-đun ( Đọc thêm ).--alwaysStricttùy chọn trình biên dịch phân tích tất cả các tệp ở chế độ nghiêm ngặt và phát ra "use strict"ở đầu tất cả các tệp xuất ra ( Đọc thêm ).Bạn có thể tìm thấy danh sách một số ví dụ bằng cách tìm kiếm các bài kiểm tra của TypeScript cho "trong chế độ nghiêm ngặt".
Dưới đây là một số ví dụ về mã sẽ chỉ đưa ra lỗi thời gian biên dịch khi bạn "use strict";:
// future reserved keyword not allowed as variable name
var let,
yield,
public,
private,
protected,
static,
implements;
// "delete" cannot be called on an identifier
var a;
delete a;
// octal literals not allowed
03;
Có một vài ví dụ nữa "use strict";sẽ chỉ đưa ra lỗi khi chạy. Ví dụ:
"use strict";
delete Object.prototype;
Cá nhân, tôi không thấy nó hữu ích trong việc ngăn tôi mắc lỗi trong TypeScript và tiếng ồn bổ sung mà nó thêm vào một tệp khiến tôi không buồn viết nó. Điều đó nói rằng, bắt đầu từ TS 2.1 tôi sẽ kích hoạt --alwaysStricttùy chọn trình biên dịch bởi vì nó bổ sung thêm mức độ nghiêm ngặt bổ sung mà không cần bất kỳ chi phí bảo trì mã nào.
use strictchuỗi nào được khai báo ở đầu tệp TS có thể xuất hiện bên trong chức năng mô-đun thay vì ở đầu tệp, do đó sẽ thay đổi một chút ngữ nghĩa.
"use strict;"
Đối với tiền của tôi, vâng , "use strict";nên được bao gồm trong các tệp TypeScript.
Bỏ qua các hiệu ứng thời gian biên dịch"use strict"; trên Bản mô tả, có khả năng có tác động thời gian chạy khi javascript được tạo được thực thi:
MDN xác định các cải tiến hiệu suất trong việc tránh quyền anh thistrong các cuộc gọi chức năng và loại bỏ các thuộc tính function.callervà function.arguments.
Jeff Walden của Mozilla cũng đã gợi ý về các cơ hội để đạt được hiệu suất trong câu trả lời này .