You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript应用中执行纯文本形式的TypeScript函数

如何在JavaScript应用中执行纯文本形式的TypeScript函数

嘿,要搞定这个问题,核心得先把TypeScript特有的语法(比如类型注解)转换成JavaScript能理解的代码——毕竟JS压根不认识那些类型声明。下面给你两个实用的解决方案:

方案一:手动移除类型注解(适合简单TS代码)

如果你的TS代码逻辑不复杂,类型注解也比较规整,用正则表达式就能快速把所有类型标记去掉,再把处理后的代码转成可执行函数。

就拿你给出的例子来说,具体操作如下:

let ts_text = `function add_five(num: number): number {
    let other_num: number = 5;
    return num + other_num;
}`;

// 第一步:移除TypeScript类型注解
const jsText = ts_text
  // 移除函数参数里的类型(比如num: number)
  .replace(/(\w+):\s*[a-zA-Z]+/g, '$1')
  // 移除函数返回值的类型(比如): number)
  .replace(/:\s*[a-zA-Z]+\s*{/g, '{')
  // 移除变量声明里的类型(比如let other_num: number)
  .replace(/let\s+(\w+):\s*[a-zA-Z]+/g, 'let $1');

// 第二步:把处理后的JS代码转成可执行函数
const func = new Function(`return ${jsText}`)();

// 现在就能正常调用啦
console.log(func(5)); // 输出10

⚠️ 注意:这个方法只适用于结构简单的TS代码,如果你的函数里有接口、泛型这类复杂TS特性,正则就搞不定了,得用下面的通用方案。

方案二:用TypeScript编译器转译(通用方案)

要是你的TS代码比较复杂,最好用官方的TypeScript编译器来转译,它能完美处理所有TS特性,兼容性拉满。

首先得在项目里安装TypeScript包:

npm install typescript --save

然后就可以用ts.transpile函数处理你的纯文本TS代码了:

const ts = require('typescript');

let ts_text = `function add_five(num: number): number {
    let other_num: number = 5;
    return num + other_num;
}`;

// 第一步:把TS代码转成标准JS代码
const transpiledResult = ts.transpile(ts_text, {
  compilerOptions: {
    target: 'ES5', // 可根据你的需求设置目标JS版本
    module: 'ESNext'
  }
});

// 第二步:把转译后的JS代码转成可执行函数
const func = new Function(`return ${transpiledResult}`)();

// 调用测试
console.log(func(5)); // 输出10

重要提醒:不管用哪种方案,只有当你完全信任这段纯文本代码的来源时才能这么做——用Function或eval执行动态代码存在安全风险,恶意代码可能会窃取数据或破坏你的应用。

备注:内容来源于stack exchange,提问作者kalkronline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:03:00