mlh-tsd
Version:
Check TypeScript type definitions
42 lines (41 loc) • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.expressionToString = exports.resolveJSDocTags = void 0;
const typescript_1 = require("../../../libraries/typescript/lib/typescript");
/**
* Resolve the JSDoc tags from the expression. If these tags couldn't be found, it will return `undefined`.
*
* @param checker - The TypeScript type checker.
* @param expression - The expression to resolve the JSDoc tags for.
* @return A unique Set of JSDoc tags or `undefined` if they couldn't be resolved.
*/
exports.resolveJSDocTags = (checker, expression) => {
const ref = typescript_1.isCallLikeExpression(expression)
? checker.getResolvedSignature(expression)
: checker.getSymbolAtLocation(expression);
if (!ref) {
return;
}
return new Map(ref.getJsDocTags().map(tag => [tag.name, tag]));
};
/**
* Convert a TypeScript expression to a string.
*
* @param checker - The TypeScript type checker.
* @param expression - The expression to convert.
* @return The string representation of the expression or `undefined` if it couldn't be resolved.
*/
exports.expressionToString = (checker, expression) => {
if (typescript_1.isCallLikeExpression(expression)) {
const signature = checker.getResolvedSignature(expression);
if (!signature) {
return;
}
return checker.signatureToString(signature);
}
const symbol = checker.getSymbolAtLocation(expression);
if (!symbol) {
return;
}
return checker.symbolToString(symbol, expression);
};