簡體   English   中英

打字稿:命名屬性類型必須可分配給字符串索引器類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM