Sekarang ada 4 cara berbeda untuk mendokumentasikan objek sebagai parameter / tipe. Masing-masing memiliki kegunaan sendiri. Hanya 3 dari mereka yang dapat digunakan untuk mendokumentasikan nilai pengembalian.
Untuk objek dengan set properti yang dikenal (Varian A)
/**
* @param {{a: number, b: string, c}} myObj description
*/
Sintaks ini sangat ideal untuk objek yang hanya digunakan sebagai parameter untuk fungsi ini dan tidak memerlukan deskripsi lebih lanjut dari setiap properti. Dapat digunakan untuk @returns
juga .
Untuk objek dengan set properti yang dikenal (Varian B)
Sangat berguna adalah parameter dengan sintaksis properti :
/**
* @param {Object} myObj description
* @param {number} myObj.a description
* @param {string} myObj.b description
* @param {} myObj.c description
*/
Sintaks ini sangat ideal untuk objek yang hanya digunakan sebagai parameter untuk fungsi ini dan yang memerlukan deskripsi lebih lanjut dari setiap properti. Ini tidak dapat digunakan untuk @returns
.
Untuk objek yang akan digunakan di lebih dari satu titik dalam sumber
Dalam hal ini @typedef sangat berguna. Anda dapat menentukan jenis pada satu titik di sumber Anda dan menggunakannya sebagai jenis untuk @param
atau @returns
atau tag JSDoc lainnya yang dapat menggunakan suatu jenis.
/**
* @typedef {Object} Person
* @property {string} name how the person is called
* @property {number} age how many years the person lived
*/
Anda kemudian dapat menggunakan ini dalam @param
tag:
/**
* @param {Person} p - Description of p
*/
Atau dalam @returns
:
/**
* @returns {Person} Description
*/
Untuk objek yang nilainya semua jenis yang sama
/**
* @param {Object.<string, number>} dict
*/
Jenis pertama (string) mendokumentasikan jenis kunci yang dalam JavaScript selalu berupa string atau setidaknya akan selalu dipaksa ke string. Tipe kedua (angka) adalah tipe nilai; ini bisa berupa tipe apa saja. Sintaks ini dapat digunakan untuk @returns
juga.
Sumber daya
Informasi yang berguna tentang tipe-tipe dokumentasi dapat ditemukan di sini:
https://jsdoc.app/tags-type.html
PS:
untuk mendokumentasikan nilai opsional yang dapat Anda gunakan []
:
/**
* @param {number} [opt_number] this number is optional
*/
atau:
/**
* @param {number|undefined} opt_number this number is optional
*/