当前位置: 首页 > 知识库问答 >
问题:

请教在typescript中动态添加元素的问题?

鄢英毅
2023-07-14

代码如下:

type InitPropsType<T> = {    type: 'load'|'save';    data: T;};type ActionType = {    load: <T>(data: T) => Promise<T>;    save: <T>(data: T) => T;}const action: ActionType = {    async load (data) {        return data;    },    save (data) {        return data;    }}function StorageMethod <T = any> (init: InitPropsType<T>): Promise<T>|T {    const { type, data } = init;    return action[type](data);}StorageMethod.reload = () => {};['refresh', 'clear'].forEach(method => {    StorageMethod[method] = () => {};});

错误在最后StorageMethod[method],提示如下:

Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'typeof StorageMethod'.
No index signature with a parameter of type 'string' was found on type 'typeof StorageMethod'.

补充说明

  • StorageMethod接收任何类型的数据,所以泛型用了<T = any>
  • 如果指定元素名称,是没有错误的,如StorageMethod.reload = () => {};
  • 如果是动态元素名称,则报错,如:StorageMethod[method]

请问如何修改使其StorageMethod[method]成立?

共有1个答案

陈功
2023-07-14

为了这个定义一大堆不划算,忽略了吧,tsconfig根节点:

"ignoreDeprecations":{    "suppressImplicitAnyIndexErrors": true,  },

根据ts版本,有的配置是

"compilerOptions": {    "suppressImplicitAnyIndexErrors": true  } 
 类似资料:
  • 问题内容: 我是Groovy的新手,尽管阅读了许多有关此的文章和问题,但我仍然不清楚发生了什么。到目前为止,据我了解,当您在Groovy中创建新数组时,底层类型是Java ArrayList。这意味着它应该可调整大小,您应该能够将其初始化为空,然后通过add方法动态添加元素,如下所示: 编译,但是在运行时失败:方法的无签名:[LMyType; .add()适用于参数类型:(MyType)值:[My

  • 我对JavaFX相对较新,我很困惑为什么我下面的代码没有产生预期的结果,即添加到网格中的标签。 我想做的是运行一个测试,将JavaFX标签添加到我的FXML GridPane,因为我想在不久的将来构建一个方法,允许用户选择一个文件,然后在用户选择文件时生成一个标签并将该标签添加到GridPane。 提前感谢, 代码: FXML代码是一个标准文件,其中定义了一个网格窗格,上面列出了fx:id。

  • 添加画笔动态 “画笔”面板提供了许多用于向预设画笔笔尖添加动态(或变化)元素的选项。例如,可以设置在描边路线中改变画笔笔迹的大小、颜色和不透明度的选项。 将动态元素添加到画笔时使用两个组件: 抖动百分比指定动态元素的随机性。如果是 0%,则元素在描边路线中不改变;如果是 100%,则元素具有最大数量的随机性。 “控制”弹出式菜单中的选项指定如何控制动态元素的变化。可以选择不控制元素的变化,按指定数

  • 问题内容: 我想将通过JSOn格式的URL接收的数据动态附加到我的列表视图中。但是我不知道它是如何工作的。 移动网站以以下格式检索对象: 在.html中,我有一个listview和一个函数,在其中尝试附加接收到的数据。我只展示身体。 也许这很容易,但是我是Web编程的新手,我不知道该如何附加检索到的数据。 有人可以帮我吗? 问题答案: 这是上述解决方案的jsfiddle(还有一个使用 代替的示例

  • 我正在尝试使用Java中的Swing制作一个GUI,它可以执行以下操作: 当按下“添加”按钮时,会创建一个JPanel,并填满图形用户界面的整个宽度。在JPanel中,JLabels将使用FlowLayout来排列,该FlowLayout告诉特定的细节(例如名称、用户ID等)。每当随后按下添加按钮时,我都希望在前面的按钮下添加一个新的JPanel,以便JScrollPane在必要时激活其垂直滚动条

  • 问题内容: 我有以下代码: Angular2中 有什么方法可以将HTML添加到中吗?因为上述内容仅添加到组件HTML的末尾。 我也尝试过: 但这是行不通的,因为@ViewChild指令必须在函数之外,我再也无法控制它了 我也这样尝试过: 我不能做的事情是因为我的内容是动态的并且使用唯一的ID,并且我不能动态使用[innerHtml](它仅适用于我第一次放入它们的面板,然后其他任何更改都不能再使用i