@geraintguan/ts-std-lib
v1.0.0
Published
[![Coverage Status](https://coveralls.io/repos/github/geraintguan/ts-std-lib/badge.svg?branch=main)](https://coveralls.io/github/geraintguan/ts-std-lib?branch=main) [![Semantic Release: Conventional Commits](https://img.shields.io/badge/Semantic_Release-C
Downloads
12
Readme
@geraintguan/ts-std-lib
A practical and pragmatic standard library for TypeScript (and JavaScript).
Installation
NPM
npm install -S @geraintguan/ts-std-lib
PNPM
pnpm add @geraintguan/ts-std-lib
Usage
Data Structures
HashMap
Implementation of a key-value map that allows you to customise the way keys are stored by using a custom hashing function.
Example: HashMap
of ISO8601 Date String keys
One useful example is using a HashMap that accepts Date
objects as keys but
storing them as their ISO8601 Date
Strings.
import * as Std from "@geraintguan/ts-std-lib";
const map = Std.Data.HashMap.emptyWithCustomHash<Date, number, string>({
hash(date) {
data.toISOString();
},
});
const today = new Date("2024-11-01T12:00:00.000Z");
const tomorrow = new Date("2024-11-02T12:00:00.000Z");
map.set(today, 2);
map.set(tomorrow, 3);
[...map.keys()]; // => [
// "2024-11-01T12:00:00.000Z",
// "2024-11-02T12:00:00.000Z"
// ]
DefaultMap
Implementation of a key-value map that allows you to customise the way keys are stored by using a custom hashing function and specify either a value or value generator function that will be returned when trying to access non-existant keys.
Example: DefaultMap
of ID of documents with timestamp that defaults to current date and time
import * as Std from "@geraintguan/ts-std-lib";
type Document = {
id: string;
};
const map = Std.Data.DefaultMap.emptyWithCustomHash<Document, Date, string>({
defaultValue: {
type: "function",
value() {
return new Date(),
}
},
hash(document) {
return document.id;
},
});
const documentA = { id: "document-a" };
const documentB = { id: "document-b" };
const documentC = { id: "document-c" };
map.set(documentA, new Date("2020-01-01T00:00:00.000Z"));
map.set(documentB, new Date("2021-01-01T00:00:00.000Z"));
map.get(documentA).toISOString() // => "2020-01-01T00:00:00.000Z"
map.get(documentB).toISOString() // => "2021-01-01T00:00:00.000Z"
map.get(documentC).toISOString() // => new Date().toISOString()
[...map.keys()] // => [
// "document-a",
// "document-b",
// "document-c",
// ]
Utility Functions
constant()
Creates a function that always returns a specific value.
Example
import * as Std from "@geraintguan/ts-std-lib";
const nine = Std.constant(9);
nine(); // => 9
nine(); // => 9
nine(); // => 9
identity()
Creates a function that always returns the value given to it as an argument.
Example
import * as Std from "@geraintguan/ts-std-lib";
[true, false, true].filter(Std.identity); // => [
// true,
// true
// ]