import {IPredicate} from './IPredicate'; export class Predicates { public static not(predicate:IPredicate):IPredicate { return { check(o:T):boolean { return !predicate.check(o); } }; } public static or(...predicates: IPredicate[]): IPredicate { return { check(o:T):boolean { let result = false; predicates.forEach(function (predicate: IPredicate) { result = result || predicate.check(o); }); return result; } }; } }