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

“X”类型的参数不能分配给“X”类型的参数

庾和昶
2023-03-14

很好的一天。我不熟悉使用VSCode键入脚本。

获取以下错误:

>

错误TS2322:类型'()=

代码:

DTO。输电系统

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);
        }
    }
}

任何帮助都将不胜感激。

共有3个答案

蒋文光
2023-03-14

还添加了其他可能出现这些错误的场景

>

  • 首先检查编译器版本,下载最新的Typescript编译器以支持ES6语法

    即使有输入错误,typescript仍会生成输出,这实际上并不妨碍开发,

    当您在初始化或调用这些方法或变量时看到这些错误,请检查函数的参数是否属于错误的数据类型,您初始化为“string”并指定了“boolean”或“number”

    例如

    1.

     private errors: string;
        //somewhere in code you assign a boolean value to (string)'errors'
        this.errors=true
        or 
        this.error=5
    

    2.

     private values: Array<number>;    
        this.values.push(value);  //Argument of type 'X' is not assignable to parameter of type 'X'
    

    这里的错误消息是因为缺少用于阵列初始化的方括号,即使没有它也可以工作,但与红色代码警报相比。

    private values: Array<number> = [];    
    this.values.push(value);
    

    注意:
    请记住,Javascript根据分配的值进行类型转换,因此types cript会通知他们,但即使在VS Code中突出显示了这些错误,代码也会执行

    前:

     var a=2;
     typeof(a) // "number"
     var a='Ignatius';
     typeof(a) // "string"
    

  • 史朗
    2023-03-14

    不管怎样,如果有人只在VSCode中遇到这个问题,只需重新启动VSCode,它应该会修复它。有时,Intellisense似乎会搞砸导入或类型。

    与Typescript相关:“RegExpMatchArray”类型的参数不能分配给“string”类型的参数

    梁浩
    2023-03-14

    您错过了括号:

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