Учитывая файл машинописного текста, например:
export interface Service {
execute(): Promise<number>;
}
Как получить список всех методов и их возвращаемых типов.
В настоящее время я пытаюсь использовать API компилятора машинописного текста для достижения этой цели. Но у меня проблемы с «дженериками».
Пока у меня есть следующий код, но я не могу понять, как получить тип «число» для обещания.
let program = ts.createProgram(['./something.ts'], {});
let typeChecker = program.getTypeChecker();
for (const sourceFile of program.getSourceFiles()) {
sourceFile.forEachChild((node: ts.Node) => {
// I filter to make sure I've the InterfaceDeclaration.
var interfaceDeclaration: ts.InterfaceDeclaration = node;
interfaceDeclaration.forEachChild((child) => {
// I make sure it is a Method Signature.
var method : ts.MethodSignature = child;
var signature = typeChecker.getSignatureFromDeclaration(method);
var returnType = typeChecker.getReturnTypeOfSignature(signature);
var parameters = method.parameters;
console.log("name: " + method.name.getText());
console.log("return type: " + returnType.symbol.getName());
console.log("parameters: " + parameters);
})
})
}
Какие отпечатки:
name: execute
return type: Promise
parameters: []
Как я могу получить тип числа в обещании?