ฉันเคยเห็นโพสต์เกี่ยวกับตำแหน่งที่จะใส่บรรทัด "ใช้อย่างเข้มงวด" ในไฟล์โค้ด TypeScript คำถามของฉันคือทำไมมีเลย?
เนื่องจาก TypeScript เป็นภาษาที่พิมพ์ยากอยู่แล้ว "ใช้แบบเข้มงวด" จึงเพิ่มอะไร
"use strict";
ฉันเคยเห็นโพสต์เกี่ยวกับตำแหน่งที่จะใส่บรรทัด "ใช้อย่างเข้มงวด" ในไฟล์โค้ด TypeScript คำถามของฉันคือทำไมมีเลย?
เนื่องจาก TypeScript เป็นภาษาที่พิมพ์ยากอยู่แล้ว "ใช้แบบเข้มงวด" จึงเพิ่มอะไร
"use strict";
คำตอบ:
อัพเดท
"use strict";ถูกปล่อยออกมาในโมดูล ( อ่านเพิ่มเติม )--alwaysStrictตัวเลือกคอมไพเลอร์จะแยกวิเคราะห์ไฟล์ทั้งหมดในโหมดเข้มงวดและปล่อย"use strict"ที่ด้านบนของไฟล์ที่ส่งออกทั้งหมด ( อ่านเพิ่มเติม )คุณสามารถค้นหารายการตัวอย่างบางส่วนได้โดยค้นหาการทดสอบของ TypeScript สำหรับ "ในโหมดเข้มงวด"
นี่คือตัวอย่างโค้ดบางส่วนที่จะทำให้เกิดข้อผิดพลาดเวลาคอมไพล์เมื่อคุณ"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ตัวเลือกคอมไพเลอร์เนื่องจากเพิ่มความเข้มงวดเพิ่มเติมเล็กน้อยโดยไม่มีค่าใช้จ่ายในการบำรุงรักษาโค้ด
use strictสตริงใด ๆ ที่ประกาศไว้ที่ด้านบนของไฟล์ TS อาจปรากฏขึ้นภายในฟังก์ชันโมดูลแทนที่จะอยู่ที่ด้านบนของไฟล์ดังนั้นจึงเปลี่ยนความหมายเล็กน้อย
"use strict;"
สำหรับเงินของฉันใช่ ,"use strict";ควรรวมอยู่ในไฟล์ typescript
เมื่อไม่คำนึงถึงผลกระทบของเวลาคอมไพล์ของ"use strict";บน typescript อาจมีผลกระทบต่อรันไทม์เมื่อเรียกใช้จาวาสคริปต์ที่สร้างขึ้น:
MDN ระบุการปรับปรุงประสิทธิภาพในการหลีกเลี่ยงการชกมวยthisในการเรียกฟังก์ชันและการลบคุณสมบัติfunction.callerและfunction.arguments
Jeff Walden จาก Mozilla ยังบอกใบ้ถึงโอกาสในการเพิ่มประสิทธิภาพในคำตอบนี้