typescript - 键入一个函数对象,该对象使用字符串键动态调用函数并将参数传递给返回的函数
问题描述
假设出于某种原因,我需要一个将函数作为键的对象,以便我可以使用字符串动态调用函数。例如:
const add_one = (n) => {
return n + 1;
};
const add_two = (n) => {
return n + 2;
};
const add_three = (n) => {
return n + 3;
};
const functionHelper = {
add_one,
add_two,
add_three,
};
var names = ['one', 'two', 'three'];
for (let i = 0; i < 3; i++) {
let funName = `add_${names[i]}`;
let result = functionHelper[funName](1);
console.log(`Adding ${names[i]}: ${result}`);
};
我正在尝试打字functionHelper
,但对如何进行感到困惑。这是我到目前为止所拥有的:
const add_one = (n: number) => {
return n + 1;
};
const add_two = (n: number) => {
return n + 2;
};
const add_three = (n: number) => {
return n + 3;
};
interface Helper {
(): any;
};
const functionHelper: Helper = {
add_one,
add_two,
add_three,
};
var names: string[] = ['one', 'two', 'three'];
for (let i = 0; i < 3; i++) {
let funName: string = `add_${names[i]}`;
let result = functionHelper[funName](1);
console.log(`Adding ${names[i]}: ${result}`);
};
产生的错误:
对象字面量只能指定已知属性,而“Helper”类型中不存在“add_one”
解决方案
推荐阅读
- c# - 为什么在使用数据表复选框时在ajax调用后查询字符串?
- java - 无法使用 docx4j 更新文档目录中的页码
- docker - 将 Jenkins 凭据传递给 Docker 构建以供 Composer 使用
- javascript - 有没有办法使用谷歌脚本为某个范围设置编辑器?
- sql-server - 如何在 xml 列 SQL SERVER 中查询一系列节点
- javascript - 仅在绘制的多边形内绘制
- mongodb - MongoDB 事件驱动数据库设计
- c++ - QObject::connect 在运行时失败,同时将线程的完成信号链接到映射器的 delateLater-slot
- sql - 获取逗号和第一个字符之间的计数
- python - 如何提高代码的效率?我正在尝试对列表进行排序