【问题标题】:JSDOC - JS How do I overload a method?JSDOC - JS 如何重载方法?
【发布时间】:2023-02-20 02:28:08
【问题描述】:

我正在努力记录方法的重载,尽管它适用于对象。

这有效:

const test = {
    /** 
     * @type {{
     * (bar: string) => boolean
     * (bar: number) => string
     * }} 
     * */
    foo: (bar) => {
        // something...
    }
}

不起作用:

class Test {
    /** 
     * @type {{
     * (bar: string) => boolean
     * (bar: number) => string
     * }} 
     * */
    foo(bar) {
        // something...
    }
}

【问题讨论】:

  • 看起来像一个错误,因为返回值看起来不错。

标签: javascript intellisense jsdoc typing


【解决方案1】:

TypeScript 5 引入了一个新的@overload 标签,因此您可以执行以下操作:

class Test {
    /** 
     * @overload
     * @param {string} bar
     * @returns {boolean}
     *
     * @overload
     * @param {number} bar
     * @returns {string}
     *
     * @param {string | number} bar
     * @returns {boolean | string}
     */
    foo(bar) {
        // something...
    }
}

看:

https://devblogs.microsoft.com/typescript/announcing-typescript-5-0-beta/#overload-support-in-jsdoc

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 2015-02-05
    • 1970-01-01
    • 2014-12-07
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多