JSDoc هي أداة لتوليد وثائق واجهات برمجة التطبيقات وصيغة لتوضيح الأنواع في JavaScript، وتدعمها خوادم لغة TypeScript.
توثيق الدوال
/**
* Calculates total invoice sum including tax.
*
* @param {number} subtotal - Net amount before tax.
* @param {number} [taxRate=0.1] - Optional tax percentage (defaults to 10%).
* @param {string} [currency='USD'] - Three-letter ISO currency code.
* @returns {number} The calculated total invoice price.
* @throws {RangeError} When subtotal is negative.
*/
function calculateTotal(subtotal, taxRate = 0.1, currency = 'USD') {
if (subtotal < 0) throw new RangeError('Subtotal must be positive');
return subtotal * (1 + taxRate);
}
تعريف الأنواع والأسماء المستعارة (@typedef)
/**
* @typedef {Object} UserProfile
* @property {number} id - Unique numeric identifier.
* @property {string} username - User account handle.
* @property {string} [email] - Optional contact email address.
* @property {'admin' | 'editor' | 'member'} role - Access control role.
*/
/**
* Loads user record from database.
* @param {number} id
* @returns {Promise<UserProfile>}
*/
async function getUser(id) {
// ...
}
وسوم JSDoc الشائعة
| الوسم | الوصف | مثال |
|---|---|---|
@type {Type} |
يصرّح عن نوع متغير | /** @type {string[]} */ |
@param {Type} name |
يوثّق معامل الدالة | /** @param {HTMLElement} el */ |
@returns {Type} |
يوثّق قيمة الإرجاع | /** @returns {Promise<void>} */ |
@async |
يشير إلى أن الدالة غير متزامنة | /** @async */ |
@deprecated |
يحدد الرمز كمهجور أو متقادم | /** @deprecated Use fetchUser() instead */ |
@see |
يربط بوثائق خارجية أو مراجع إضافية | /** @see {@link https://example.com} */ |
@template T |
يصرّح عن معامل نوع عام (Generic) | /** @template T @param {T} item */ |