Utvärdera Typescript från sträng?


Är det möjligt att spara min Typescript-kod i en sträng och utvärdera den under körning? För ett enkelt exempel:

let code: string = `({
    Run: (data: string): string => {
        console.log(data); return Promise.resolve("SUCCESS"); }
    })`;

Kör det sedan så här:

let runnalbe = eval(code);
runnable.Run("RUN!").then((result:string)=>{console.log(result);});

Bör skriva ut:

RUN!SUCCESS

Svar #1

Det officiella TypeScript-kompilator-API:et tillhandahåller ett sätt att transpile källsträngar vid körning:

import * as ts from "typescript";

let code: string = `({
    Run: (data: string): string => {
        console.log(data); return Promise.resolve("SUCCESS"); }
    })`;

let result = ts.transpile(code);
let runnalbe :any = eval(result);
runnalbe.Run("RUN!").then((result:string)=>{console.log(result);});

Svar #2

Är det möjligt att spara min Typescript-kod i en sträng och utvärdera den under körning

Ja. Genom att använda TypeScript-kompilatorns transpile-funktion.

Mer

Kolla in TypeScript - Script: https://github.com/basarat/typescript-script som i sin kärna helt enkelt är ts.transpile: https://github.com/basarat/typescript-script/blob/163388be673a56128cc1e1b3c76588001a8c1b18/transpiler.js#L60

Relaterade artiklar