【问题标题】:JSDoc doesn't print a param of a custom type (typedef)JSDoc 不打印自定义类型的参数 (typedef)
【发布时间】:2020-11-18 06:01:40
【问题描述】:

我通过@typedef定义了一个自定义类型:

/**
 * @typedef {Object} FILE_DATA
 * @property {NodeJS.ReadableStream} fileStream
 * @property {string} fileUUID
 */

然后我在方法签名中应用这个自定义类型:

/**
 * Upload file to Dropbox
 *
 * @param {FILE_DATA} fileData - file data to be stored
 * @returns {Promise<Readonly<{fileName: string, folderUUID: string, isSucceeded: boolean, message: string}>>} file upload result
 */
export const fileUpload = async function fileUpload(fileData) {…}

当我生成一个 JSDoc 时,我希望 fileUpload() 文档将包含一个自定义类型,实际上关于 fileUpload() 的唯一文档是:

(静态,常量)文件上传
上传文件到 Dropbox

如何让JSDoc显示更多关于fileUpload()的细节?

【问题讨论】:

    标签: jsdoc jsdoc3


    【解决方案1】:

    要解决这个问题,重要的是在函数fleUpload 中添加注释@function/@method

    /**
     * Upload file to Dropbox
     *
     * @function
     * @param {FILE_DATA} fileData - file data to be stored
     * @returns {Promise<Readonly<{fileName: string, folderUUID: string, isSucceeded: boolean, message: string}>>} file upload result
     */
    export const fileUpload = async function fileUpload(fileData) {
    

    添加此注释后,JSDoc 会将 fileUpload 放在方法而不是成员之下。

    【讨论】:

    • 不会将您的代码重构为export async function fileUpload(fileData) { ... } 否定@method 的需要吗?初始变量赋值似乎没有必要。
    • 我决定在函数声明上使用严格的命名函数表达式来获得对代码的更多控制,例如没有提升,因此重构为 export async function fileUpload(fileData) { ... } 的代码与我的用例无关。
    • 好的,这很公平。在这种情况下,我只能假设fileUpload 在同一个文件的其他地方使用(即使它是export'ed),或者函数体可能引用外部变量/函数 - 否则决定使用 "strict函数声明上的命名函数表达式” 由于提升是没有实际意义的。
    • @RobC,我使用exportfileUpload 暴露在模块之外,以便能够从另一个模块调用该函数。对我来说,迁移到 JS 的关键问题是其不可预测的(与 C/Java/C# 相比)行为,这就是为什么我决定尽可能坚持最严格的方法。
    猜你喜欢
    • 2017-11-21
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2019-08-11
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多