gpt4 book ai didi

javascript - Typescript:命名属性类型必须可分配给字符串索引器类型

转载 作者:行者123 更新时间:2023-12-03 02:26:18 25 4
gpt4 key购买 nike

我只是一个继承了一些 TypeScript 代码的贫穷程序员。有时您只是想了解正在发生的事情,而不需要花几周时间来流利地掌握一门新语言。我有一个界面:

interface IJQuery {
addRecordInline(object: any);
}

我在 addRecordInline 上遇到错误:

“命名属性类型 '(object any) => any' 必须可分配给字符串索引器类型 'HTMLElement':类型 'HTMLElement' 具有非可选属性 'accessKey',该属性在类型 '(object any) 中不存在=> 任何'

只要有任何关于正在发生的事情的线索,我们将不胜感激。我浏览过互联网......有一些关于索引器的帖子似乎最接近。但这里发生了什么?只是指向一些信息的指针。谢谢。

编辑:

正在实现的接口(interface)示例:

interface IDocumentManager {
UpdateForm: IJQuery;
UpdateActionUrl: string;
DocIdPrefix: string;
}

第二次编辑:

这是一个实现该接口(interface)的类:

class MemberDocumentManager implements IDocumentManager {
private ConfirmDeleteButton: IJQuery;
// other declarations removed

constructor() {
this.ConfirmDeleteButton = $('#deleteConfirmButton');
}
}

JQuery 对象被分配给实现相关接口(interface)的成员,这是问题所在吗?

最佳答案

根据错误,这不是 IJQuery 的唯一定义。据我所知,这是特定于您的项目的,而不是 JQuery 库的一部分。

根据错误,可能有一个包含索引器的 IJQuery 定义:

interface IJQuery {
[name: string]: HTMLElement
}

这意味着在此类型上定义的所有属性都必须是 HTMLElement 类型

interface IJQuery {
addRecordInline(object: any) : void; // Not ok
anElement: HTMLElement // OK
}

您可以通过删除索引器 ([name: string]: HTMLElement) 来放宽限制,或者在另一个接口(interface)上定义方法,或者更改索引器以返回元素或函数 ([name: string]: HTMLElement | Function)(尽管这可能会在多个地方破坏您的代码)

关于javascript - Typescript:命名属性类型必须可分配给字符串索引器类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48934175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com