2017-07-17 115 views
2

是否有可能将我的Typescript代码保存为一个字符串,并在运行期间将其忽略?对于简单的例子:从字符串评估Typescript?

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

然后,像这样运行它:

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

应打印:

RUN!SUCCESS 
+0

号因为打字稿不JavaScript和使用'eval'很可能会给你一个语法错误。 – d4nyll

+1

Typescript是为了让你的代码更安全而发明的:)将代码放在字符串中使得它令人难以置信的不安全:) – Kokodoko

回答

2

official TypeScript compiler API提供了一种transpile源字符串:

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);});