Mục tiêusở hữu giao diện typescript để chuỗi
Tôi có một nguyên cảo giao diện:
interface IInterface{
id: number;
name: string;
}
Tôi có một số phương pháp mà mất trong mục tên của một tài sản (string).
Ex:
var methodX = (property: string, object: any) => {
// use object[property]
};
Vấn đề của tôi là khi tôi gọi methodX
, tôi phải viết tên thuộc tính trong chuỗi.
Ex:methodX("name", objectX);
nơi objectX thực hiện IInterface
Nhưng đây là BAD: Nếu tôi đổi tên một tài sản (giả sử tôi muốn đổi tên name
-lastname
) i sẽ phải cập nhật bằng tay tất cả của tôi mã.
Và tôi không muốn sự phụ thuộc này.
Vì giao diện bản ghi không có triển khai JS, tôi không thấy cách tôi không thể sử dụng chuỗi.
Tôi muốn có một cái gì đó như: methodX(IInterface.name.propertytoString(), objectX);
Tôi khá mới để JS, bạn sẽ thấy một sự thay thế?
(Tùy chọn) Chi tiết khác: Tại sao tôi cần chuyển thuộc tính làm tham số và tại sao tôi không sử dụng phương pháp chung?
tôi sử dụng phương pháp liên kết dữ liệu:
linkData = <TA, TB>(
inputList: TA[],
inputId: string,
inputPlace: string,
outputList: TB[],
outputId: string) => {
var mapDestinationItemId: any = {};
var i: number;
for (i = 0; i < outputList.length; ++i) {
mapDestinationItemId[outputList[i][outputId]] = outputList[i];
}
var itemDestination, itemSource;
for (i = 0; i < inputList.length; ++i) {
itemDestination = inputList[i];
itemSource = mapDestinationItemId[itemDestination[inputId]];
if (itemSource) {
itemDestination[inputPlace] = itemSource;
}
}
};
Nhưng TA và TB có thể có rất nhiều id khác nhau. Vì vậy, tôi không thấy làm thế nào để làm cho nó chung chung hơn.
Great câu trả lời! Bạn có thể giải thích một chút về cách thức giao dịch của TypeScript với các giao diện do người dùng định nghĩa và nó biên dịch chúng thành gì? Bởi vì tôi không tìm thấy nhiều về điều này. Cảm ơn! –
Ngoài ra, bạn có thể nghĩ ra cách nào để trích xuất tất cả các thuộc tính của giao diện theo cách này không? Cảm ơn! –
@ radu-matei Giao diện TypeScript không chuyển thành Javascript. Nó đơn giản không tồn tại trong Javascript. – Machtyn