Function Overloads for a Parser
Declare overload signatures so one parser returns a typed object for structured input and a string for plain input, guiding callers precisely.
Code
export interface ParseOptions {
contentType: "application/json";
}
export function parse(input: string, options: ParseOptions): Record<string, unknown>;
export function parse(input: string, options?: { contentType?: "text/plain" }): string;
export function parse(
input: string,
options?: ParseOptions | { contentType?: "text/plain" },
): string | Record<string, unknown> {
if (options && options.contentType === "application/json") {
return JSON.parse(input) as Record<string, unknown>;
}
return input.trim();
}
const text = parse(" hello ");
const record = parse("{\"a\":1}", { contentType: "application/json" });Report a problem with this exampleOpens a pre-filled issue on GitHub.