I encountered an error while trying to execute the code at line
let result: Array<any> = a.Where(func);
. Even though the method where
usually returns Array<any>
, I am still encountering this issue.
export {};
type Predicate<T> = (item: T) => boolean;
interface KeyArrayPair<K, T> {
Key: K;
Value: Array<T>;;
}
declare global {
interface Array<T> {
First: {
(): T;
(Func: Predicate<T>): T;
};
Where(Func: Predicate<T>): Array<T>;
}
}
Array.prototype.Where = function (func: (x: any) => boolean): Array<any> {
let result: Array<any> = [];
let a: Array<any> = this;
for (let i of a) {
if (func(i)) {
result.push(i);
}
}
return result;
};
Array.prototype.First = function (func?: (x: any) => boolean): any {
let a: Array<any> = this;
if (a.length === 0) {
throw 'Array does not contain elements';
}
if (!func) {
return a[0];
}
let result: Array<any> = a.Where(func);
if (result.length === 0) {
throw 'Array does not contain elements';
}
return result[0];
};