TypeScript-kompilator API hent type av kartlagt egenskap
Gitt type Mapping=Record<'success' | 'error', React.ReactNode>. Hvordan får jeg TypeScript.Type ved bruk av compiler API?
Symbolet for Mapping har to egenskaper som forventet, men hvert egenskapssymbol har ingen type.
I { success: React.ReactNode, error: React.ReactNode } kunne du få typen for hver egenskap ved å bruke checker.getTypeOfSymbolAtLocation(symbol, symbol.declarations[0]), men dette ser ikke ut til å fungere for kartlagte typer
Svar #1
Dette fungerer når man oppgir enten navnet eller typenoden til typealiaset for node-argumentet i TypeChecker#getTypeOfSymbolAtLocation(symbol, node):
const mappingDec = sourceFile.statements[0] as ts.TypeAliasDeclaration;
const mappingType = typeChecker.getTypeAtLocation(mappingDec.name);
// then example use...
for (const prop of mappingType.getProperties()) {
const name = prop.getName();
const type = typeChecker.getTypeOfSymbolAtLocation(prop, mappingDec.name)
}
