I've been trying to document an overload function in JS using JSDoc:
There's 2 use cases:
assignSlave(ticket, userid);
assignSlave(ticket, firstname, lastname);
I'd like to have it look like this in VSCode:
Case 1
Case 2
And so on...
I tried the solution given in Document overloaded function in JSDoc but it didn't work for me:
/**
* Test
*
* @function assignSlave
* @param {String} ticket
* @param {String} userid
*//**
* Test2
*
* @function assignSlave
* @param {String} ticket
* @param {String} firstname
* @param {String} lastname
*/
function assignSlave(a, b, c){}
assignSlave()
I get this:
Is there a way to achieve what I'm trying to do?
I read this article but am not sure how it works in my case.
Do it like the following snippet. Change from function
to an arrow function
and set its type accordingly. The last thing is to assign a default value to trailing arguments so the overload types are compatible with each other.
/**
* @type {{
* (ticket: string, userid: string): void;
* (ticket: string, firstname: string, lastname: string): void;
* }}
*/
const assignSlave = (a, b, c = '') => {}
assignSlave('ticket', 'userid')
assignSlave('ticket', 'firstname', 'lastname')
This way the function is recognized with 2 overloads:
Overload 1
Overload 2