From 2fbc25fcd5220b84993ca3134993c3d774168738 Mon Sep 17 00:00:00 2001 From: Lukas Tetzlaff Date: Sun, 29 Apr 2018 20:40:09 +0200 Subject: [PATCH] Add some more types --- source/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/index.ts b/source/index.ts index a65e2ec..c1b634d 100644 --- a/source/index.ts +++ b/source/index.ts @@ -111,7 +111,7 @@ namespace is { // tslint:disable-line:no-namespace export const string = isOfType('string'); export const number = isOfType('number'); export const function_ = isOfType('function'); - export const null_ = (value: any): value is null => value === null; + export const null_ = (value: null | any): value is null => value === null; export const class_ = (value: any) => function_(value) && value.toString().startsWith('class '); export const boolean = (value: boolean): value is boolean => value === true || value === false; export const symbol = isOfType('symbol'); @@ -120,10 +120,10 @@ namespace is { // tslint:disable-line:no-namespace export const array = Array.isArray; export const buffer = Buffer.isBuffer; - export const nullOrUndefined = (value: any): value is null | undefined => null_(value) || undefined(value); + export const nullOrUndefined = (value: null | undefined | any): value is null | undefined => null_(value) || undefined(value); export const object = (value: object) => !nullOrUndefined(value) && (function_(value) || isObject(value)); - export const iterable = (value: IterableIterator): value is IterableIterator => !nullOrUndefined(value) && function_(value[Symbol.iterator]); - export const generator = (value: any): value is Generator => iterable(value) && function_(value.next) && function_(value.throw); + export const iterable = (value: IterableIterator): value is IterableIterator => !nullOrUndefined(value) && function_(value[Symbol.iterator]); + export const generator = (value: Generator): value is Generator => iterable(value as IterableIterator) && function_(value.next) && function_(value.throw); export const nativePromise = (value: Promise): value is Promise => isObjectOfType>(TypeName.Promise)(value); @@ -236,10 +236,10 @@ namespace is { // tslint:disable-line:no-namespace 'nodeValue' ]; - export const domElement = (value: any) => object(value) && value.nodeType === NODE_TYPE_ELEMENT && string(value.nodeName) && + export const domElement = (value: object & { nodeType: 1; nodeName: string }) => object(value) && value.nodeType === NODE_TYPE_ELEMENT && string(value.nodeName) && !plainObject(value) && DOM_PROPERTIES_TO_CHECK.every(property => property in value); - export const nodeStream = (value: object) => !nullOrUndefined(value) && isObject(value) && function_(value.pipe); + export const nodeStream = (value: object & { pipe: Function }) => !nullOrUndefined(value) && isObject(value) && function_(value.pipe); export const infinite = (value: number) => value === Infinity || value === -Infinity;