vscode: วิธีอ้างอิงประเภทจากไลบรารี node_module

ฉันได้ติดตั้งโมดูล npm (react-native-mobx) ที่มาพร้อมกับประเภทต่างๆ แล้ว นี่คือไฟล์จากไดเร็กทอรี node_modules:

ป้อนคำอธิบายรูปภาพที่นี่

ให้ความสนใจกับไฟล์ mobx.d.ts ที่ไฮไลต์ซึ่งมีประเภทต่างๆ ฉันติดตั้ง typescript 2.2.2 แล้ว และในตอนนี้ ประเภทต่างๆ ก็อยู่ในโฟลเดอร์ @types ภายใน node_modules ในกรณีนี้ ฉันจะอ้างอิงไลบรารีนี้ในโค้ดของฉันและมีสติปัญญาปกติได้อย่างไร ฉันควรสร้างโฟลเดอร์ 'react-native-mobx' ภายใน @types และคัดลอก mobx.d.ts ในนั้นและเปลี่ยนชื่อเป็น index.d.ts หรือไม่

ขอขอบคุณสำหรับความช่วยเหลือของคุณ.


person TheSoul    schedule 20.04.2017    source แหล่งที่มา
comment
ควรทำงานนอกกรอบเท่าที่ฉันรู้ คุณสามารถเรียกใช้ 'tsc' ด้วยตนเองด้วยแฟล็ก ' --traceResolution' และคุณจะเห็นว่า typescript ค้นหาประเภทใน node_modules/react-native-mobx ก่อนที่จะค้นหาในโฟลเดอร์ node_modules/@types/react-native-mobx   -  person Aviad Hadad    schedule 20.04.2017
comment
ขอบคุณคำตอบ นี่คือคำตอบที่ฉันใช้ 'tsc --traceResolution' : File 'C:/.../node_modules/react-native-mobx/index.d.ts' ไม่มีอยู่   -  person TheSoul    schedule 20.04.2017
comment
ดูเหมือนว่า tsc คาดว่าจะมี index.d.ts ที่รูทของไลบรารี   -  person TheSoul    schedule 20.04.2017


คำตอบ (2)


นี่ควรจะได้ผลสำหรับคุณ คุณใช้ mobx เวอร์ชันใดอยู่

ใน [email protected] node_modules/mobx/package.json ระบุ "typings": "lib/mobx.d.ts" ซึ่งคอมไพเลอร์ TypeScript tsc จะตรวจสอบเพื่อค้นหาการพิมพ์

หาก package.json ไม่ได้ระบุค่า typings หรือ types ระบบจะใช้ค่าเริ่มต้นเพื่อค้นหา index.d.ts โปรดดูเอกสารสำหรับข้อมูลเฉพาะเพิ่มเติมเกี่ยวกับวิธีการแก้ไข: https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html

บางทีคุณอาจใช้ mobx เวอร์ชันเก่ากว่าซึ่งไม่มี package.json ที่เหมาะสมพร้อมระบุ typings

person Alex    schedule 21.04.2017

@Alex ขอบคุณสำหรับคำตอบ และใช่ package.json ระบุ typings": "lib/mobx.d.ts ประเด็นก็คือ: คำจำกัดความของไฟล์นี้ไม่ได้อยู่ที่รูทของไลบรารี แต่อยู่ในไดเร็กทอรีย่อย นี่คือโครงสร้างโฟลเดอร์ภายในโฟลเดอร์โปรเจ็กต์ node_modules:

 /react-native-mobx
    -index.js
    -package.json
    -readme.md
    ...
    /node_modules
         /mobx
            -package.json <-- "typings: lib/mobx.d.ts"
            /lib
               - mob.d.ts

เมื่อฉันเรียกใช้ tsc --traceResolution ฉันเห็นว่า typescript กำลังแยกวิเคราะห์โฟลเดอร์ภายในนี้จริงๆ แต่มันรายงานว่า package.json ไม่มีการพิมพ์ แปลกมาก...

อัปเดต เพื่อแก้ไขปัญหานี้ ฉันคัดลอก mobx.d.ts จากโฟลเดอร์ภายในไปยังโฟลเดอร์รูท และเปลี่ยนชื่อเป็น index.d.ts ตอนนี้ typescript จะเลือกประเภท แต่นี่เป็นวิธีแก้ปัญหาที่น่าเกลียดมากเนื่องจากฉันกำลังยุ่งกับไฟล์ในโฟลเดอร์ node_modules

person TheSoul    schedule 21.04.2017