Skip to content

Instantly share code, notes, and snippets.

View joshuaaron's full-sized avatar

Josh Reynolds joshuaaron

  • Course Hero
  • Vancouver, Canada
View GitHub Profile
@joshuaaron
joshuaaron / map-set-extended.ts
Created December 15, 2020 05:33
Extended Map & Set
class ExtendedMap<K, V> extends Map<K, V> {
update(key: K, updater: (value: V, key: K) => V, reset: V = undefined) {
if (this.has(key)) {
this.set(key, updater(this.get(key), key));
}
else this.set(key, reset);
}
filter(predicate: (value: V, key: K) => boolean) {
const newMap = new ExtendedMap<K, V>();
@joshuaaron
joshuaaron / debounce-typescript.ts
Created December 1, 2020 05:08
Typescript versions of regular Debounce, and DebouncedPromised
const debounce = <F extends (...args: any[]) => any>(fn: F, delay: number) => {
let timeout: NodeJS.Timeout;
const debounced = (...args: any[]) => {
clearTimeout(timeout);
timeout = setTimeout(() => fn(...args), delay);
};
return debounced as (...args: Parameters<F>) => ReturnType<F>;
};