Files
NapCatQQ/.pnpm-store/v3/files/3b/0997da8c0b52d08850b9e6217bbac491ae0a49025baae8880d8de6984b0d32d8ffc604fe08936ea8d4cbc9fb3be643ba4a794802be94cae03ee12f933de7fb
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

48 lines
1.1 KiB
Plaintext

"use strict"
const ts = (() => {
try {
// eslint-disable-next-line n/no-unpublished-require
return require("typescript")
} catch {
return null
}
})()
/**
* @param {import('typescript').Type | null} type
* @returns {string | null}
*/
module.exports = function getFullTypeName(type) {
if (ts === null || type === null) {
return null
}
/**
* @type {string[]}
*/
let nameParts = []
let currentSymbol = type.getSymbol()
while (currentSymbol !== undefined) {
if (
currentSymbol.valueDeclaration?.kind === ts.SyntaxKind.SourceFile ||
currentSymbol.valueDeclaration?.kind ===
ts.SyntaxKind.ModuleDeclaration
) {
break
}
nameParts.unshift(currentSymbol.getName())
currentSymbol =
/** @type {import('typescript').Symbol & {parent: import('typescript').Symbol | undefined}} */ (
currentSymbol
).parent
}
if (nameParts.length === 0) {
return null
}
return nameParts.join(".")
}