ข้อผิดพลาดของ TypeScript ใน typeof: "X อ้างอิงถึงเพียงประเภทเท่านั้น แต่ถูกใช้เป็นค่าในที่นี้"
ทางเลือกที่นี่คืออะไร:
const MY_SET =
(typeof Set === 'undefined') ? undefined : new Set();
ฉันได้รับข้อผิดพลาด:
error TS2693: 'Set' only refers to a type, but is being used as a value here.
สิ่งนี้แนะนำให้ประกาศตัวแปร any ที่ไหนสักแห่งในไฟล์ มันใช้งานได้ แต่ดูไม่สวยงามและไม่ปลอดภัยด้านประเภทข้อมูล
มีไวยากรณ์ทางเลือกไหม?
คำตอบ #1
ปัญหาคือโค้ดต้องใช้ TSConfig compilerOptions.lib รุ่นเก่ามาก ตั้งค่า lib และ target ใน tsconfig.json ของคุณเป็นเวอร์ชันที่ค่อนข้างใหม่ เช่น "es2020"
TypeScript ถูกบอกว่า runtime ของ JavaScript ของคุณไม่มีคลาสทั่วโลก Set เพียงแต่มีชนิดทั่วไปที่บังเอิญถูกเรียกว่า Set ดังนั้น TypeScript จึงร้องเรียนว่าโค้ดพยายามใช้ตัวดำเนินการ runtime (typeof) กับชนิดของ ระบบชนิด (Set) แต่ชนิดในระบบชนิดมีไว้สำหรับช่วยพัฒนาเวลาเท่านั้น: มันไม่มีอยู่ใน runtime
https://www.learningtypescript.com/articles/why-increase-your-tsconfig-target เข้าไปสู่บริบททั่วไปเกี่ยวกับ TSConfig lib และ target มากขึ้น