Rumah > hujung hadapan web > tutorial js > pencarian modul npm jsDoc

pencarian modul npm jsDoc

PHPz
Lepaskan: 2024-08-30 19:06:25
asal
496 orang telah melayarinya

jsDoc npm module quest

Pada masa ini saya sedang mengusahakan/mengekalkan aplikasi js/react warisan, di mana tiada pilihan untuk mengolah semula ke taip, jadi sebab itu saya menghidupkan jsDoc sebagai sistem jenis masa pembangunan yang wujud untuk JS.

TLDR;

Modul npm typescript dibuat oleh jsDoc, useDuck mengembalikan zaman keemasan redux di bawah 70LOC. Kes kegunaan utama modul ini dalam masa pembangunan, apabila membantu keadaan kompleks anda kekal selamat.

const [state, quack] = useDuck(reducer, initialState, actionsMap);
Salin selepas log masuk

jsdoc-duck

Jalan ke skrip taip ke jsDoc

Pengalaman saya dengan skrip taip menjadi lebih mendalam apabila saya mencipta pustaka npm keadaan tindak balas ringan: react-state-factory

User declared 
state and actions types 
  -> useStateFactory 
  -> [state, dispatchedActoionCollection]
Salin selepas log masuk

Menguji had jsDoc

Selepas saya mula menggunakan beberapa anotasi jsDoc untuk membantu kerja saya, langkah seterusnya adalah lebih bercita-cita tinggi: kerjakan semula modul ini kepada jsDoc. Pada pandangan pertama ini adalah misi yang mustahil. Tetapi selepas menghabiskan beberapa minggu untuk memahami jsDoc, saya nampak sedikit cahaya di hujung terowong.

Sistem jenis seram: pengurang

Di bawah titik tertentu saya menemui had keras keupayaan jsDoc, apabila saya cuba menulis fungsi pengurang, di mana hasilnya ialah Quack tetapi sudah tentu ia memulakan {} kosong. Jadi hanya penghujung larian pengurang mencipta Quack yang betul kerana jenis itu ingin tahu tentang objek mengandungi semua kunci yang diminta. Jadi masalah ini sehingga sekarang saya tidak dapat menyelesaikannya, jika ada yang boleh memberi idea yang baik bagaimana saya boleh menyelesaikannya sila kongsi dengan saya atau sertai pembangunan modul ini sebagai kolaborator.

Perangkap lain: Tiada jenis dalam modul tanpa TS

Pada mulanya saya mencipta satu fail js yang mengandungi semua jsDoc @typedef yang perlu, lambat laun ini akan berfungsi. Dan pada masa itu saya fikir hanya satu langkah untuk mencipta modul nod untuk mereka.
Tetapi fakta yang menyedihkan, pada modul npm yang mengandungi jenis yang dieksport tidak berfungsi dengan jsDoc sahaja, jadi wajib untuk menyusun d.ts jadi pada penghujung modul jsDoc jangan sebutkan 100% JS sebaliknya binaan menggunakan skrip taip juga.

@typedef dalam modul jsdoc-duck

Seperti yang anda kenali dalam forum dev.to, sorotan sintaks tidak mengenali jsDoc. Perkara lain yang salah ini @typedef dalam ujian saya hanya berfungsi jika anda menulis satu baris, jadi ia bertentangan dengan kod bersih.

Dalam catatan blog saya yang seterusnya, saya akan menulis ialah kes penggunaan konkrit perpustakaan ini, susun: permudahkan dan taipkan pengendalian keadaan tindak balas dengan useReducer.

/**
 * @template T - Payload Type
 * @typedef {T extends { type: infer U, payload?: infer P } ? { type: U, payload?: P } : never} ActionType
 */

// @ts-ignore
/** @template AM - Actions Map @typedef {{ [K in AM['type']]: K }} Labels */

// @ts-ignore
/** @template AM - Actions Map @typedef {{ [T in AM["type"]]: Extract<AM, { type: T }> extends { payload: infer P } ? (payload: P) => void : () => void }} Quack */

/**
 * @template ST - State
 * @template AM - Actions Map
 * @typedef {(state: ST, action: AM) => ST} Reducer
 */
Salin selepas log masuk

Atas ialah kandungan terperinci pencarian modul npm jsDoc. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan