Hvordan kan jeg bruge TypeScript Compiler API'et til at udtrække typen af et array
Hvordan kan jeg bruge TypeScript Compiler API til at udtrække typen af et array? For eksempel givet denne kilde:
let a: string[] = []
Hvordan kan jeg gå fra at få typen string[] til kun string?
ts-morph gør dette nemt, men jeg har ikke fundet ud af, hvordan man replikerer det med den rå TS Compiler API.
Det ser ud til, at jeg skal bruge checker.getTypeArguments(), men det kræver en ts.TypeReference-type, som jeg ikke ved, hvordan man opretter.
Svar #1
En array-type som string[] vil være i formen:
Array<string>
Hvis du har en af disse typer, kan du blot påstå, at det er en ts.TypeReference og sende det ind i TypeChecker#getTypeArguments:
const typeArgs = typeChecker.getTypeArguments(arrayType as ts.TypeReference);
const elementType = typeArgs[0];
For at tjekke om en type er en array-type, tjekker jeg normalt bare typen symbolets navn for Array og om den har et enkelt typeargument.
