Skip to content

Latest commit

 

History

History
143 lines (105 loc) · 2.52 KB

README.md

File metadata and controls

143 lines (105 loc) · 2.52 KB

yutolity

This module provides utilities.

How to use

Comparison

They can be used instead of obj !== null or obj !== undefined .

notNull, notUndefined, hasValue

const array = ["text", 123, null, undefined, "text2"];
array.filter(notNull); // ["text", 123, undefined, "text2"]
array.filter(notUndefined); // ["text", 123, null, "text2"]
array.filter(hasValue); //  ["text", 123, "text2"]

Object related

isKeyOf

Return type: boolean

Check if the specified key is key of the object.

getValueOf

Return type: T[keyof T] | undefined

Type safe object value accessor.

const obj = {
    key: "key",
    value: { value: 1 },
};
const val = getValueOf(obj, "key");
// The data type of val is following
// string | {
//     value: number;
// } | undefined

const key: string = "key";
const val2 = obj[key]; // error

setValue

setValue({}, "key", 1); // { key: 1 }
setValue(undefined, "key", 1); // { key: 1 }
setValue("value", "key.foo", 1); // { key: { foo: 1 } }
setValue({ key: { hoge: 22 } }, "key.foo", 1);
// { key: { foo: 1, hoge: 22 } }

Array related

range

Create integer array.

range(5, 10); // [5, 6, 7, 8, 9, 10]
range(2, -2); // [2, 1, 0, -1, -2]
range(2, 2); // [2]

rangeByStep

Create number array but you can specify the number to increment.

rangeByStep(1, 7, 2); // [1, 3, 5, 7]
rangeByStep(0.1, 0.3, -0.1); // [0.1, 0.2, 0.3]
rangeByStep(0.3, -0.11, 0.1); // [0.3, 0.2, 0.1, 0, -0.1]
rangeByStep(-0.2, 0.3, 1); // [-0.2]
rangeByStep(0.000001, 0.000003, 0.000001); // [0.000001, 0.000002, 0.000003]

recursiveGetValueOf

Return type: unknown

const obj = {
    key: "key",
    value: { value: 1 },
};
const val = recursiveGetValueOf(obj, "value.value"); // 1

Number related

getPrecision

Return type: number

getPrecision(11.223); // 3
getPrecision(11.0);   // 0
getPrecision(1e-11);  // 11
getPrecision(1e+21);  // 21

String related

indexesOf/lastIndexesOf

Return type: {index: number; foundString: string;}

const text = "ab bc de bc";
indexesOf(text, ["bc", "de"]);
//{
//     index: 3,
//     foundString: "bc",
// }
lastIndexesOf(text, ["bc", "de"]);
// {
//     index: 9,
//     foundString: "bc",
// }

minIndexOf/maxIndexOf

Return type: {index: number; foundString: string;}

minIndexOf(text, ["de", "ab", "bc"]);
// {
//     index: 0,
//     foundString: "ab",
// }
maxIndexOf(text, ["bb", "de", "ab"]);
// {
//     index: 6,
//     foundString: "de",
// }