angular - Hämta klass-/funktionskommentarer vid körning


Jag letar efter ett sätt att hämta kommentarer från klass och funktion vid körning i en Angular-app i syfte att generera en egen dokumentation. Att använda ett externt verktyg för att generera dokumentationen passar inte mina krav. Jag behöver verkligen generera dokumentationen själv.

Jag har gjort några försök och för tillfället har jag två möjliga fall:

  1. Läser in de berörda klasserna som en sträng och extraherar kommentarerna med strängmanipulationer (inte det bästa fallet enligt min åsikt).

  2. Importera klasserna och använd ts för att extrahera kommentarerna. Vid denna punkt stöter jag på några fel i min Angular-app när jag försöker importera ts: import * as ts från 'typescript'. Det orsakar uppenbarligen en cirkulär referens. Denna kod visar hur man extraherar kommentarer från en klass men det verkar som att det inte kan användas i en Angular-app vid körning: kommentar-fabrik från TypeDoc-källor

Har någon en idé om ett sätt att extrahera kommentarer från en klassreferens eller från en sträng som representerar klassen?

Svar #1

Det du frågar efter är en implementering av metaprogrammering i TypeScript, vilket inte är tillgängligt för tillfället. Du behöver förstå att webbläsaren inte kör TS-kod direkt. Istället kompileras koden till JavaScript, och först då sker körningen. Och kommentarer finns där bara för att programmeraren ska se dem - de behöver inte överföras till den resulterande JS-transpilerade koden.

Typedoc fungerar bara vid kompileringstid, så det har tillgång till alla TS-källfiler. Om du vill skapa ditt eget verktyg för dokumentationsanalys är det okej, men du skulle behöva lära dig mycket om hur programmeringsspråksanalys fungerar. Sök efter "dragon book", "Let's build a simple interpreter" och andra källor.