คำตอบนี้จะเป็นประโยชน์ต่อผู้ที่ใช้แพ็คเกจ npm ts-node
คำตอบนี้จะเป็นประโยชน์ต่อผู้ที่พึ่งพาแพคเกจ
ฉันยังดิ้นรนกับความกังวลเดียวกันกับการขอขยายเวลาวัตถุฉันติดตามคำตอบมากมายใน stack-overflow และจบลงด้วยการทำตามกลยุทธ์ที่กล่าวถึงด้านล่าง
ฉันประกาศการพิมพ์เพิ่มเติมสำหรับExpressในไดเร็กทอรีต่อไปนี้${PROJECT_ROOT}/api/@types/express/index.d.ts
declare namespace Express {
interface Request {
decoded?: any;
}
}
แล้วอัปเดตของฉันtsconfig.json
เป็นแบบนี้
{
"compilerOptions": {
"typeRoots": ["api/@types", "node_modules/@types"]
...
}
}
แม้ว่าจะทำตามขั้นตอนข้างต้นแล้วสตูดิโอภาพก็หยุดบ่น แต่น่าเสียดายที่ts-node
คอมไพเลอร์ยังคงใช้การโยน
Property 'decoded' does not exist on type 'Request'.
เห็นได้ชัดว่าts-node
ไม่สามารถค้นหาข้อกำหนดประเภทเพิ่มเติมสำหรับการร้องขอวัตถุที่
ในที่สุดหลังจากใช้เวลาหลายชั่วโมงเนื่องจากฉันรู้ว่า VS Code ไม่ได้บ่นและสามารถค้นหาคำจำกัดความการพิมพ์ได้ซึ่งหมายความว่ามีบางอย่างผิดปกติ ts-node
ตาม
การอัปเดตการเริ่มต้นscript
ในpackage.json
การแก้ไขนั้นสำหรับฉัน
"start": "ts-node --files api/index.ts",
--files
ข้อโต้แย้งที่มีบทบาทสำคัญที่นี่พบว่าการกำหนดคำจำกัดความของประเภทที่กำหนดเอง
ดูข้อมูลเพิ่มเติมได้ที่https://github.com/TypeStrong/ts-node#help-my-types-are-missing