เขียนนิยามชนิด typescript .d.ts ลงในโฟลเดอร์ node_module

Apr 01 2019

ฉันต้องการเขียนไฟล์. d.ts สำหรับไลบรารีภายนอก (npm) ฉันใช้ typescript 3

การนำเข้าที่ฉันต้องการคือ:

import fakedb from 'fake-indexeddb'; //sorted
// second import I would like:
import dbKeyRange from 'fake-indexeddb/lib/FDBKeyRange'

จากประเภท / fake-indexeddb.d.ts:

export = index;
declare const index: IDBFactory;

ฉันจะเขียนไฟล์สำหรับการนำเข้าครั้งที่สองจากไลบรารีที่ฉันต้องการ ( fake-indexeddb/lib/FDBKeyRange- an IDBKeyRange) ได้อย่างไร

แก้ไขในขณะที่คำตอบของ Juraj Kocan เป็นสิ่งที่ฉันต้องใส่ในไฟล์. d.ts ตามเหตุผลคำถามคือฉันต้องตั้งชื่อไฟล์ว่าอะไรเพื่อให้ดีบักเกอร์และทรานสไพเลอร์ค้นหาไฟล์เมื่อฉันเขียนimport dbKeyRange from 'fake-indexeddb/lib/FDBKeyRange'- เห็นได้ชัดว่ามันเป็นอย่างไร พบว่าประเภท / ปลอม indexeddb.d.tsไฟล์

คำตอบ

JurajKocan Apr 01 2019 at 21:24

เพิ่มชื่อเต็มในการประกาศ

declare module 'fake-indexeddb/lib/FDBKeyRange' {
  class dbKeyRange {}
  export default dbKeyRange
}

แก้ไข

มีกฎบางประการสำหรับการประกาศ เพิ่มรูทชนิดใน tsconfig

 "typeRoots": [
  "./node_modules/@types",
  "./whateveryouwant/types"
],

หรือเส้นทางอื่น ๆ ก็ไม่สำคัญ ต้องกำหนดใน ts config จากนั้นเพิ่มโฟลเดอร์ที่มีชื่อโมดูลของคุณ ในโฟลเดอร์นี้ให้เพิ่ม index.d.ts

--src
  --types
    --fake-indexeddb
      --index.d.ts
Brent Apr 02 2019 at 03:47

ในที่สุดฉันก็แมปเส้นทางโฟลเดอร์ภายใต้ไดเร็กทอรี types ของฉันและมันก็ใช้ได้ เส้นทางสุดท้ายไปยังไฟล์นิยามคือ:

types/fake-indexeddb/lib/FDBKeyRange.d.ts

ด้วยคำจำกัดความในไฟล์นั้น