[英]Typescript: Named property type must be assignable to string indexer type
我只是一個可憐的程序員,他繼承了一些TypeScript代碼。 有時,您只是想知道正在發生的事情,而無需花幾周的時間就能熟練掌握一種新語言。 我有一個界面:
interface IJQuery {
addRecordInline(object: any);
}
我在addRecordInline上遇到錯誤:
“命名屬性類型'(object any)=> any'必須可分配給字符串索引器類型'HTMLElement':類型'HTMLElement'具有非可選屬性'accessKey',該屬性在''(object any)=> any類型中不存在“
任何關於正在發生的事情的線索都將不勝感激。 我在互聯網上四處張望...關於索引器的一些帖子似乎最接近。 但是這里發生了什么? 只是一些信息的指針。 謝謝。
編輯:
正在實現的接口示例:
interface IDocumentManager {
UpdateForm: IJQuery;
UpdateActionUrl: string;
DocIdPrefix: string;
}
第二次編輯:
這是實現接口的類:
class MemberDocumentManager implements IDocumentManager {
private ConfirmDeleteButton: IJQuery;
// other declarations removed
constructor() {
this.ConfirmDeleteButton = $('#deleteConfirmButton');
}
}
一個JQuery對象被分配給實現該接口的成員,這是問題嗎?
基於錯誤,這不是IJQuery
的唯一定義。 據我所知,這特定於您的項目,並且不屬於JQuery
庫。
形成錯誤后,可能有一個包含索引器的IJQuery
定義:
interface IJQuery {
[name: string]: HTMLElement
}
這意味着在此類型上定義的所有屬性都必須為HTMLElement
類型
interface IJQuery {
addRecordInline(object: any) : void; // Not ok
anElement: HTMLElement // OK
}
您可以通過刪除索引器( [name: string]: HTMLElement
)放松限制,或者在另一個接口上定義方法,或者更改索引器以返回元素或函數( [name: string]: HTMLElement | Function
)(盡管這可能會在幾個地方破壞您的代碼)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.