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

新手上路,请多包涵

再会。我是使用 VSCode 的 Type Script 新手。

收到以下错误:

  1. 错误 TS2322:类型 ‘() => string’ 不可分配给类型 ‘string’。

  2. 错误 TS2322:类型 ‘() => number’ 不可分配给类型 ‘number’。

编码:

DTO.ts

 interface DTO {

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

链接对象.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);
        }
    }
}

任何帮助将不胜感激。

原文由 Sasha 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 586
2 个回答

你错过了括号:

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

原文由 MartyIX 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于无法避免此错误的情况,我们可以 @ts-忽略 该错误。

在我的情况下,我必须将一个字符串参数传递给 isNaN,它的 ts 定义只允许数字类型的参数。

 // @ts-ignore: Argument of type 'string' is not assignable to parameter of type 'number'.
 if (isNaN(myParam)) { // myParam is of string type
      throw new Error('myPram should be a number');
 }
// but isNaN can accept string params too in javascript
isNaN(123) //false
isNaN('123') //false
isNaN(NaN) //true
isNaN('NaN') //true

原文由 Viraj Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进