Рассмотрим:
const compose = <S, T, R>(func1: (inp2: T) => R, func2: (inp: S) => T): (inp: S) => R => ((arg: S) => func1(func2(arg)));
const not = (val: boolean): boolean => !val;
const equals = <T>(val1: T): (val2: T) => boolean => ((val2: T): boolean => (val1 == val2));
и класс
class MyClass {
constructor(public readonly name: string) { }
}
Ниже приведены два способа поиска в списке myarray
для MyClass
с именем "find me"
:
(1) Поиск с использованием
myarray.filter(compose(equals("find me"), (c: MyClass): string => c.name));
(2) Добавить public getName(): string {return this.name; }
к определению класса и поиск с использованием
myarray.filter(compose(equals("find me"), MyClass.prototype.getName.bind));
Вопрос: Оба варианта многословны.Можно ли определить функтор, который принимает класс и переменную-член и возвращает «получатель» для этой переменной-члена?