typescript - Bỏ --always-strict khỏi 'tsconfig.json' trong một module ESM
ESM & "use strict"
Kể từ khi phát hành các cờ tsconfig.json sau...
$ tsc --module "Node16"$ tsc --moduleResolution "Node16"
...Tôi chỉ viết các Module JavaScript theo tiêu chuẩn ES6, trong "TypeScript". Theo tôi hiểu, việc thêm "use strict"; vào một tài liệu JavaScript giống như thêm một chỉ thị phân tích cú pháp vào tài liệu (nó thậm chí có thể là một chỉ thị phân tích cú pháp, tôi cũng không thực sự biết). Câu lệnh duy nhất này thông báo cho engine JavaScript (khi engine JS diễn giải câu lệnh) rằng một số quy tắc nhất định cần được thực thi.
Các quy tắc "use strict" bao gồm, nhưng không giới hạn ở...
arguments.calleekhông được phép- Từ khóa
withkhông được phép - Các khóa của một đối tượng phải là duy nhất
- và một số người khác mà tôi không thể nhớ ngay bây giờ...
2B Frank, các chi tiết của "use strict" không quá quan trọng trong bối cảnh của câu hỏi này. Điều thực sự quan trọng là sự hiểu biết của tôi về cách các quy tắc use-strict được triển khai trong ES-Modules. Theo như tôi hiểu, chúng là một phần của đặc tả chuẩn ESM, và do đó, không có lý do gì để phải thêm "use strict"; vào các tệp trong một ES-Module.
Cờ TSC --alwaysStrict
Theo tài liệu TypeScriptLang.org, cờ tsc, "alwaysStrict": true, đảm bảo rằng các tệp đều được xuất ra với "use strict"; ở đầu. Xét rằng ESM đã thực hiện các quy tắc của "use strict", mà không cần phải thêm câu lệnh "use strict"; vào tệp, liệu có an toàn khi chỉ đơn giản là ngừng thêm "alwaysStrict": true vào các tệp tsconfig.json trong các dự án ESM không?
Ban đầu tôi hỏi vì có một vài Kho lưu trữ mà tôi theo dõi trên GitLab & GitHub, và tôi nhận thấy không ai bỏ qua "alwaysStrict". Tất cả vẫn bao gồm nó. Sau đó một khía cạnh khác đã được làm rõ cho tôi trong các bình luận, sau khi phiên bản gốc của câu hỏi này được soạn thảo (kể từ đó tôi đã chỉnh sửa câu hỏi về lỗi chính tả & ngữ pháp, cũng như các câu chạy dài và danh pháp sai (mà tôi đã sửa).
Vậy, tóm lại, những gì tôi muốn làm là loại bỏ "alwaysStrict" nếu tôi có thể làm mà không gặp rủi ro tiêu cực. Ý tôi là, nếu nó vô dụng, tại sao lại giữ nó? Vì vậy, tôi muốn biết cách nào để biết rằng tôi có thể loại bỏ nó một cách an toàn, hoặc chỉ đơn giản là những hậu quả có thể xảy ra khi loại bỏ nó. Liệu nó chỉ là lãng phí không gian, hay có những trường hợp mà tôi vẫn muốn giữ "alwaysStrict" trong tệp tsconfig.json của mình, và/hoặc "use strict" trong các tệp JavaScript được sinh ra từ dự án của tôi.