typescript - טיעון מהסוג 'X' אינו ניתן להקצאה לפרמטר מהסוג 'X'


יום טוב. אני חדש ב-Type Script, משתמש ב-VSCode.

מתקבלים השגיאות הבאות:

  1. <ציטוט>

    שגיאה TS2322: סוג '() => string' אינו ניתן להקצאה לסוג 'string'.

  2. שגיאה TS2322: סוג '() => number' אינו ניתן להקצאה לסוג 'number'.

הקוד:

DTO.ts

interface DTO {

    getId(): number;
    getValue(): string;
}
export = DTO;

LinkedObject.ts

class LinkedObject {

    public value: string = "Not Set";
    public id: number = 0;

    constructor(value?: string, id?: number) {
        this.value = value;
        this.id = id;
    }
}
export = LinkedObject;

אני מנסה לאתחל את המחלקה LinkedObject באמצעות שיטות הממשק שהוזכרו למעלה:

TravelClientFormPopulator.ts

class TravelClientFormPopulator {

    public populateComboBoxUsingDTOs(dataObjects: Array<DTO>, comboBoxID: string): void {

        // Get the combo box
        var selectElement = <HTMLSelectElement> document.getElementById(comboBoxID);
        // Reset the options 
        selectElement.options.length = 0;

        var linkedObjectsToAdd: LinkedObject[] = new Array<LinkedObject>();

        var defaultLinkedObject: LinkedObject = new LinkedObject("Not Selected", 0);

        linkedObjectsToAdd.push(defaultLinkedObject);

        for (var i = 0; i < dataObjects.length; i++) {
            var value: string = dataObjects[i].getValue; // Error here
            var id: number = dataObjects[i].getId; // And here
            var linkedObject: LinkedObject = new LinkedObject(value, id);
        }
    }
}

כל עזרה תוערך מאוד.

תשובה #1

אתה מחזיר סוגריים:

var value: string = dataObjects[i].getValue(); 
var id: number = dataObjects[i].getId();

תשובה #2

לעניין מה שזה שווה, אם למישהו יש את הבעיה הזו רק ב-VSCode, פשוט אתחול של VSCode אמור לתקן את זה. לפעמים, Intellisense נראה שמתבלבל עם יבוא או סוגים.

קשור ל-Typescript: ארגומנט מסוג 'RegExpMatchArray' לא ניתן להקצות לפרמטר מסוג 'string'