signatureOf
tcmts.core.analyze.signatureOf · #spk25vtv · term · runs anywhere
import type { DefSite } from "#codebase/tcmts/core/extract";
import type { TypeChecker } from "#codebase/tcmts/core/ts";
import { TypeFormatFlags as ts_TypeFormatFlags } from "typescript/sync";
export function signatureOf(site: DefSite, checker: TypeChecker): string {
if (site.kind === "type") return site.tag === "Interface" ? "interface" : "type";
const flags = ts_TypeFormatFlags.NoTruncation | ts_TypeFormatFlags.UseAliasDefinedOutsideCurrentScope;
if (site.isWatch) return checker.typeToString(checker.getTypeAtLocation(site.nodes[0]!), undefined, flags);
const sym = checker.getSymbolAtLocation(site.nameNode!);
if (!sym) return "?";
return checker.typeToString(checker.getTypeOfSymbolAtLocation(sym, site.nameNode!), undefined, flags);
}
uses
used by