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
ตัวอย่างง่ายๆ
