sig
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))}`; }