@fcrozatier/ts-helpers v2.5.0
The missing js and ts helpers
Arrays
sum
: Calculates the sum of an array of numbers. Returns 0 if the array is empty.
sum([1,2,3]) // 6
mean
: Computes the mean of an array of number. Returns 0 if the array is empty
mean([1,2,3]) // 2
findIndexAndValue
: Finds a value in an array given a predicate, and returns an object with the value and its index
const fruits = ["banana", "peach", "strawberry" ];
findIndexAndValue(fruits, (f) => f === "peach") // {index: 1, value: "peach"}
range
: Creates an array of numbers betweenstart
(defaults to 0) andstop
(excluded) in increments ofstep
(defaults to 1)
range(3) // [0,1,2]
range(1,3) // [1,2]
range(1,6,2) // [1,3,5]
areArraysEquivalent
: Checks whether two arrays have the same elements
areArraysEquivalent([1, 2, 3], [3, 2, 1]) // true;
Functions
once
: Decorator making a function callable once
let i = 0;
const increment = () => i++;
const wrapped = once(increment);
wrapped(); // i = 1
wrapped(); // i = 1
wrapped(); // i = 1
Heap
A fast priority queue / heap implementation, with O(nlog(n))
complexity.
The constructor takes a comparator function.
Public fields:
size
: (number) the size of the heapisEmpty
: (boolean) whether the heap is emptyenqueue
: adds an element to the queue and prioritizes itdequeue
: pops the next element in the priority queuepeek
: look at the next element without popping ithas
: checks whether a given element is in the queue
const queue = new PriorityQueue((a: string, b: string) => a < b ? -1 : a === b ? 0 : 1);
queue.enqueue("Bob");
queue.enqueue("Zack");
queue.enqueue("Alice");
queue.size(); // 3
queue.has("Dan"); // false
queue.dequeue(); // Alice
queue.dequeue(); // Bob
queue.peek(); // Zack
queue.isEmpty(); // false
queue.dequeue(); // Zack
Numbers
round
: Rounds a value to a given precision. By default rounds to the nearest integer
round(Math.PI, 2) // 3.14
modulo(n: number, d: number)
: Computesn
modulod
.
Note: the modulo operator has the same sign as the divisor d
whereas the remainder n % d
has
the same sign as the dividend n
modulo(-1, 3); // 2
-1 % 3; // -1
Promises
debounce
: A debounce decorator. Parameters:func
The function to debounce.delay
(default: 100) Minimum delay in ms between calls.throttle
(default:false
) When debouncing every new call tofunc
resets the delay timer. When throttling the function ensures there is at leastdelay
ms between calls
const arr = [];
const fn = debounce(() => arr.push(Math.random()), 10);
fn();
await sleep(6);
fn();
await sleep(6);
fn();
await sleep(11);
arr.length; // 1
Debounce
: a debounce class, similar to the simpler function, but with the ability toflush
Random
randint(a:number, b: number)
: Returns a random integer in[a;b]
randint(0, 5) // 2
Sets
areSetsEqual
: checks whether two sets are equal
const s1 = new Set([2, 3, 4]);
const s2 = new Set([4, 3, 2]);
areSetsEqual(s1, s2); // true
Strings
randomString
: Creates a random string of a given length in the alphabet[a-zA-Z0-9_-]
(64 characters)
randomString(8); // TNxOLDho
nanoId
: A fast alias ofrandomString
withlength = 8
by default
nanoId(); // b6eKfYLB
capitalize
: Turns the first letter of a string to uppercase
capitalize("capitalized") // "Capitalized"
Types
type
: Returns a string representation of the type of an object and is more precise thantypeof
.
// null / undefined types
type(null); // "null"
type(undefined); // "undefined"
// other primitive types
type(0); // "number"
type(BigInt(0)); // "bigint"
type(true); // "boolean"
type(""); // "string"
type(Symbol("")); // "symbol"
// object types
type([]); // "array"
type(new Date()); // "date"
type(new Boolean(true)); // "boolean"
type(new Number(0)); // "number"
type(new String("")); // "string"
type(new Error("")); // "error"
type(new RegExp("a")); // "regexp"
type(/a/); // "regexp"
type({}); // "object"
// function type
type(() => 1); // "function"
type(class Dog {}); // "class"
StrictOmit<T, K extends keyof T>
: Utility type similar toOmit
with constrained keys for stricter types.StrictExtract<T, U extends T>
: Utility type similar toExtract
with constrained keys for stricter typesTimeout
: Return type ofsetTimeout
StructuredCloneValue
: allowable values for thestructuredClone
function
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago