A collection of random useful utility functions that you may not find in lodash. These utility functions are emitted as ES6 modules so that they are tree-shakable.
npm install andrews-utilsA collection of random useful utility functions that you may not find in lodash. These utility functions are emitted as ES6 modules so that they are tree-shakable.
This utility library provides a series of generic TypeScript type guards for validating your data.
This type guard validates that the provided object contains the provided property names.
#### hasOwnProperties Interface
``typescript`
function hasOwnProperties<
X extends Record
Y extends PropertyKey,
A extends Y[]
>(obj: X, props: A) => obj is X & Record
`typescript
import { isObject, hasOwnProperties } from 'andrews-utils';
const val: unknown = {
foo: 'bar',
hello: 'world',
};
if (isObject(val) && hasOwnProperties(val, ['foo', 'hello'])) {
// -> do something with obj.foo or obj.hello
}
`
---
This type guard validates that the provided object contains the provided property.
#### hasOwnProperty Interface
`typescript`
function hasOwnProperty
obj: X,
prop: Y
) => obj is X & Record
`typescript
import { isObject, hasOwnProperty } from 'andrews-utils';
const val: unknown = {
foo: 'bar',
hello: 'world',
};
if (isObject(val) && hasOwnProperty(val, 'foo')) {
}
`
---
This type guard validates that the provided value is an array.
#### isArray Interface
`typescript`
function isArray(value: unknown) => value is unknown[];
`typescript
import { isArray } from 'andrews-utils';
const arr: unknown = ['foo', 'bar'];
if (isArray(arr)) {
arr.forEach(val => {});
}
`
---
This type guard validates that the provided value is a number.
#### isNumber Interface
`typescript`
function isNumber(value: unknown) => value is number;
`typescript
import { isNumber } from 'andrews-utils';
const val: unknown = 123;
if (isNumber(val)) {
const answer = val * 2;
}
`
---
This type guard validates that the provided value is an object.
#### isObject Interface
`typescript`
function isObject(value: unknown) => value is Record
`typescript
import { isObject } from 'andrews-utils';
const obj: unknown = {
foo: 'bar',
};
if (isObject(val)) {
// Do something with object with unknown properties.
// Usually you would combine this with the hasOwnProperties type guard.
}
`
---
This type guard validates that the provided value is not undefined or null.
#### isSet Interface
`typescript`
function isSet
`typescript
import { isSet } from 'andrews-utils';
const val: unknown = 123;
if (isSet
const answer = val * 2;
}
`
---
This type guard validates that the provided value is a string.
#### isString Interface
`typescript`
function isString(value: unknown) => value is string;
`typescript
import { isString } from 'andrews-utils';
const val: unknown = 'foo';
if (isString(val)) {
const chars = val.split('');
}
`
---
Executes a standard fetch but returns the JSON response as unknown to force you to validate it.
#### safeJsonFetch Interface
`typescript`
async function safeJsonFetch(
input: RequestInfo | URL,
init?: RequestInit | undefined
) => Promise
`typescript
import { safeJsonFetch } from 'andrews-utils';
safeJsonFetch('https://example.com/user/1').then(json => {
const answer = json * 2;
// => TSError: Object is of type 'unknown'.ts(2571)
// This error is expected because json should be of type unknown.``
});