I have a following definition of SRequest
object:
type SRequest = {
headers: string[];
get(header: string): string;
get(header: 'Set-Cookie'): string[];
}
const myReq: SRequest = {
headers: [ 'a' ],
get: (header: string | 'Set-Cookie'): string | string[] => {
if (header === 'Set-Cookie') {
return [ 'x' ];
}
return '';
}
}
But it fails to compile. I thought with overloaded function I can use union type for different arguments but I get this error:
Error:
Type '(header: string | 'Set-Cookie') => string | string[]' is not assignable to type '{ (header: string): string; (header: "Set-Cookie"): string[]; }'.
Type 'string | string[]' is not assignable to type 'string'.
Type 'string[]' is not assignable to type 'string'.