javascript 如何重载一个方法?

pwuypxnk  于 2023-02-21  发布在  Java
关注(0)|答案(1)|浏览(108)

我正在努力记录方法的重载,尽管它对对象很有效。

此方法有效

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

不起作用:

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

eyh26e7m

eyh26e7m1#

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

相关问题