ค้นหาเว็บไซต์

javascript - "ไม่พบไฟล์ประกาศสำหรับโมดูล" เมื่อทำการนำเข้าไฟล์ .jsx ที่มีอยู่


(ขออภัยหากนี่เป็นข้อความซ้ำ ฉันไม่สามารถหา Q&A ที่เกี่ยวกับไฟล์ .jsx ที่มีอยู่ได้)

ฉันได้ย้ายแอปของฉันไปยัง TypeScript แล้วและตอนนี้ก็มีข้อผิดพลาดต่อไปนี้จำนวนมาก:

Could not find a declaration file for module '../components/...'. '.../components/....js' implicitly has an 'any' type.ts(7016)

ฉันคงไม่อยากต้องไล่ดูทั้งแอปของฉันตอนนี้แล้วแปลงทุกอย่างเป็น .tsx ฉันรู้สึกว่าการเปลี่ยน noImplicitAny เป็น false ในไฟล์ tsconfig ของฉันนั้นเกินไป เพราะฉันแค่อยากจะละเว้นปัญหาเกี่ยวกับการนำเข้าตอนนี้เท่านั้น

มีวิธีที่สมเหตุสมผลมากกว่านี้ในการแก้ไขข้อผิดพลาดเหล่านี้หรือไม่?

คำตอบ #1

คุณควรสร้างชนิดสำหรับแพ็กเกจบางตัวที่ยังไม่มีอยู่

declare module 'objectname' {
  const content: any;
  export default content;
}

โมดูล JavaScript ทั้งหมดอาจจะไม่มีชนิดสำหรับมัน ดังนั้นเราจำเป็นต้องสร้างคำจำกัดความของชนิดสำหรับวัตถุที่เรากำหนด วิธีที่ง่ายที่สุดในการกำหนดสำหรับบุคคลที่สามคือดังที่กล่าวข้างต้น เพราะ webpack จะตรวจสอบ index.d.ts ที่เกี่ยวข้อง d.ts เป็นไฟล์คำจำกัดความของชนิดสำหรับวัตถุที่คุณจะมี

ในกรณีของคุณ มันหายไปและนั่นเป็นสาเหตุที่คุณได้รับข้อผิดพลาดนั้น ดังนั้นไฟล์กำหนดประเภทต้องถูกสร้างขึ้นพร้อมกับชื่อวัตถุ หรือบางครั้งมันอาจเป็นส่วนขยาย

any หมายถึงชนิดข้อมูลใด ๆ ภายในวัตถุ คุณต้องลงมือลองใช้งานกับ interfaces และ types ของ typescript

ตัวอย่างง่ายๆ

บทความที่เกี่ยวข้อง