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.

TypescriptData Integrity

Code

snippet
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" });