export function asStringOrNull(str: unknown) {
  return typeof str === "string" ? str : null;
}

export function asStringOrUndefined(str: unknown) {
  return typeof str === "string" ? str : undefined;
}

export function asNumberOrUndefined(str: unknown) {
  return typeof str === "string" ? parseInt(str) : undefined;
}

export function asNumberOrThrow(str: unknown) {
  return parseInt(asStringOrThrow(str));
}

export function asStringOrThrow(str: unknown): string {
  const type = typeof str;
  if (type !== "string") {
    throw new Error(`Expected "string" - got ${type}`);
  }
  return str;
}