У меня есть утилита, которая принимает массив и предикат для выполнения фильтрации массива, однако после использования моего пользовательского типа для предиката я получаю сообщение об ошибке
свойство 'name'не существует для типа 'T'
Я думал, что универсальный тип свойства T
принял бы что-нибудь?
Я что-то упускаю из виду?
Array.ts
export type arrayPredicate = <T>(arg: T) => boolean;
ArrayUtil
static filterArray<T>(array: T[], arrayPred: arrayPredicate): T {
const key = Object.keys(array).find(obj => arrayPred(array[obj]));
return array[key];
}
Использование в тесте
const array = [
{
'name': 'object-1',
'id': 1
},
{
'name': 'object-2',
'id': 2
}
];
it(... , () => {
// I get red squigglies under '.name'
const myObj = ArrayUtils.filterArray(exceptionalStatuses, (status => status.name === findStatus));
...
});
Конечно, меняется