* Use guard clasue
* use function type instead of build in function
export const defined = (value: unknown) => typeof value !== 'undefined';
-export const isFunction = (value: unknown) => typeof value === 'function';
+export const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';
// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384
export const setsEqual = <T>(a: Set<T>, b: Set<T>) => {
| [number, number, number, number]
): ColorModel;
-export function isPatternOrGradient(value: string | AnyObject): boolean;
+export function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient;
export interface ColorModel {
rgbString(): string;
export function log10(x: number): number;
-export function isNumber(v: unknown): boolean;
+export function isNumber(v: unknown): v is Number;
export function almostEquals(x: number, y: number, epsilon: number): boolean;
export function almostWhole(x: number, epsilon: number): number;
export function sign(x: number): number;