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
