Ngày tốt lành. Tôi mới dùng Type Script, sử dụng VSCode.Đối số của loại 'X' không thể gán cho tham số kiểu 'X'
Bắt lỗi sau đây:
-
lỗi TS2322: Loại '() => string' là không thể chuyển nhượng để gõ 'chuỗi'.
-
TS2322 lỗi: Loại '() => số' không thể chuyển nhượng để gõ 'số'.
Bộ luật:
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;
Tôi cố gắng để nhanh chóng LinkedObject
lớp sử dụng trên các phương pháp giao diện được đề cập:
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);
}
}
}
Bất kỳ trợ giúp sẽ được đánh giá cao.
Cũng hữu ích khi bạn hiểu những gì lỗi đang nói để giúp bạn trong tương lai. 'Type '() => string' không thể gán cho kiểu 'string'.' về cơ bản là nói trong trường hợp này" Một hàm trả về một chuỗi không thể gán cho một biến kiểu chuỗi "Khi bạn đọc'() => chuỗi' chính xác, tất cả nên có ý nghĩa. Nếu đó là JS thuần túy, bạn sẽ không gặp lỗi và biến của bạn sẽ trỏ đến một hàm thay vì giá trị được trả lại và thậm chí còn khó khăn hơn để theo dõi những gì đang diễn ra. – DeezCashews