sig

tcmts.cli.semver_checks.sig · #lqjccxzm · term · runs anywhere

A signature as it reads: (xs: number[], n?: number) => string (type parameters by name, as declared).

import { FLAGS, params } from "#codebase/tcmts/cli/semver_checks";
import type { TypeChecker } from "#codebase/tcmts/core/ts";
import type { Signature as ts_Signature, Type as ts_Type } from "typescript/sync";

export function sig(checker: TypeChecker, s: ts_Signature): string {
  const str = (t: ts_Type) => checker.typeToString(t, undefined, FLAGS);
  const tps = s.getTypeParameters().map(str);
  const ps = params(checker, s).map((p) => `${p.rest ? "..." : ""}${p.name}${p.optional ? "?" : ""}: ${str(p.type)}`);
  return `${tps.length ? `<${tps.join(", ")}>` : ""}(${ps.join(", ")}) => ${str(checker.getReturnTypeOfSignature(s))}`;
}

uses

used by