Home > @zero-dim/utils > convertStringsToFunctions
convertStringsToFunctions() function
递归将对象中的函数字符串转换为可执行函数
Signature:
typescript
export declare function convertStringsToFunctions(input: any | Function): any;
Parameters
Parameter | Type | Description |
---|---|---|
input | any | Function | 输入值,可以是函数字符串、对象、数组或其他任何类型 |
any
转换后的结果,保持原始数据结构不变
Remarks
- 支持深层嵌套的对象和数组结构 - 只转换包含 'run(' 的字符串 - 保持其他类型的值不变 - 支持异步函数的转换
Example
typescript
// 示例1: 基础对象转换
const input = {
add: 'run(a, b) { return a + b; }',
multiply: 'run(x, y) { return x * y; }',
constant: 42
};
const result = convertStringsToFunctions(input);
console.log(result.add(2, 3)); // 输出: 5
console.log(result.multiply(4, 5)); // 输出: 20
console.log(result.constant); // 输出: 42
// 示例2: 嵌套对象转换
const nestedInput = {
math: {
add: 'run(a, b) { return a + b; }',
utils: {
square: 'run(x) { return x * x; }'
}
},
data: [
'run(x) { return x + 1; }',
'run(x) { return x * 2; }'
]
};
const nestedResult = convertStringsToFunctions(nestedInput);
console.log(nestedResult.math.add(2, 3)); // 输出: 5
console.log(nestedResult.math.utils.square(4)); // 输出: 16
console.log(nestedResult.data[0](5)); // 输出: 6
// 示例3: 异步函数对象转换
const asyncInput = {
fetch: 'async run(url) { return await fetch(url); }',
process: 'async run(data) { return await Promise.resolve(data * 2); }'
};
const asyncResult = convertStringsToFunctions(asyncInput);
// 使用转换后的异步函数
const data = await asyncResult.process(10); // 输出: 20