javascript - TypeScript 檔案中需要使用 "Use Strict" 嗎?
我看過一些關於在 TypeScript 代碼文件中應該把 "use strict" 放在哪裡的帖子。我的問題是,為什麼要有它呢?
既然 TypeScript 已經是一種強型別語言,『use strict』還能增加什麼?
答案#1
更新
- TypeScript 1.8+:
"use strict";會在模組中產生(閱讀更多)。 - TypeScript 2.1+:
--alwaysStrict編譯器選項會解析所有嚴格模式下的檔案,並在所有輸出檔案頂端發出「use strict」字樣(閱讀更多)。
您可以透過搜尋 TypeScript 的測試中「in strict mode」來找到一些範例的列表。
這裡有一些程式範例,只有在你 "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;
還有一些例子,其中 "use strict"; 只有在運行時才會拋出錯誤。例如:
"use strict";
delete Object.prototype;
就個人而言,我並不覺得它在防止我在 TypeScript 中犯錯方面特別有用,而且它為檔案增加的額外噪音讓我不想去寫它。話雖如此,從 TS 2.1 開始,我會啟用 --alwaysStrict 編譯器選項,因為它增加了輕微的額外嚴格性,而不會帶來任何程式碼維護負擔。
答案#2
依我看,是的,"use strict"; 應該包含在 TypeScript 檔案中。
忽略 編譯時 "use strict"; 對 TypeScript 的影響,當生成的 JavaScript 被執行時,很可能會有 運行時 的影響:
MDN 指出,在函數調用中避免對
this進行裝箱以及移除function.caller和function.arguments屬性能上有所改善。Mozilla 的 Jeff Walden 在這個回答中也暗示了性能提升的機會。
