我意识到这有点晦涩难懂,但也许其他人已经遇到过这个问题或者很了解 Typescript 编译器。我正在使用 Typescript 的编译器 API 处理 Typescript 文件,基于以下示例:https ://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API
想象一下,我在 Typescript 中有一个这样的声明函数:
export type DateString = string;
export function parseDate(date: DateString): Date{
let parsedDate = Date.parse(date);
let retVal = new Date();
retVal.setTime(parsedDate);
return retVal;
}
在上面链接的示例中,您可以看到定义了这样的方法来提取有关符号的信息:
function serializeSymbol(symbol: ts.Symbol): DocEntry {
return {
name: symbol.getName(),
type: checker.typeToString(checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration))
};
}
当您checker.typeToString(checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration)
在date: DateString
符号上运行时,它不是返回DateString
,而是返回string
。换句话说,你得到的不是声明的类型别名,而是完全解析的类型。就我而言,我想知道该date
字段的类型是DateString
. 是否有一种简单的方法来查找参数的声明类型而不是其解析类型?