I dont know if this question once was asked, because I cant find it anywhere. (maybe I’m blind)
If this question is a dup, please tell me as this might also fixes my problem.
I want to change the return inside my jsDocs to match what really returns and not array | object
.
Here an Example:
// class.someFunc: (str: string, bool?: boolean) => array
class.someFunc('string', true);
// class.someFunc: (str: string, bool?: boolean) => object
class.someFunc('string', false);
I tried with different types of defaults, thought it might change.
Both in the .d.ts function and in the jsDocs above.
/** @param [bool=true] */
static someFunc(str: string, bool: boolean=true): array;
/** @param [bool=false] */
static someFunc(str: string, bool: boolean=false): object;
But it still used the above definition from the .d.ts even when bool
was false
.
>Solution :
If I’m understanding correctly, you’re looking to define typescript overloads
// these are the overloads that can actually be used for typing
function someFunc(str: string, bool: true): object;
function someFunc(str: string, bool: false): any[];
// this one is the real implementation, note that its inputs and
// outputs encompass all of the overloads' types
function someFunc(str: string, bool: boolean): object | any[] {
if (bool) return [];
return {};
}