ObjectiveМашинопись интерфейс свойство строки
У меня есть интерфейс Машинопись:
interface IInterface{
id: number;
name: string;
}
У меня есть некоторые методы, которые принимают в записи имя свойства (строка).
Ex:
var methodX = (property: string, object: any) => {
// use object[property]
};
Моя проблема заключается в том, что, когда я называю methodX
, я должен написать имя свойства в строке.
Ex:methodX("name", objectX);
где ObjectX реализует IInterface
Но это BAD: Если я переименовать свойство (скажем, я хочу, чтобы переименовать name
в lastname
) мне придется обновлять вручную все мои код.
И я не хочу эту зависимость.
Поскольку интерфейсы типа ввода не имеют реализаций JS, я не вижу, как я не мог использовать строку.
Я хочу иметь что-то вроде: methodX(IInterface.name.propertytoString(), objectX);
Я довольно новыми для JS, вы видите альтернативу?
(необязательно) Дополнительная информация: Зачем мне нужно передавать свойства как параметр и почему я не использую общий метод?
Я использую методы, которые связывают данные:
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;
}
}
};
Но TA и TB может иметь много различных идентификаторов. Поэтому я не вижу, как сделать его более общим.
Великий ответ! Не могли бы вы немного рассказать о том, как TypeScript имеет дело с интерфейсами, определенными пользователем и с чем он их компилирует? Потому что я ничего не нашел об этом. Спасибо! –
Кроме того, можете ли вы придумать какой-либо способ извлечь все свойства интерфейса таким образом? Благодаря! –
@ radu-matei Интерфейс TypeScript не переводится в Javascript. Это просто не существует в Javascript. – Machtyn