Add is.asyncIterable
This commit is contained in:
parent
f81976aa44
commit
2dbf247fc0
2 changed files with 16 additions and 9 deletions
|
|
@ -136,7 +136,7 @@ namespace is { // tslint:disable-line:no-namespace
|
||||||
export const nullOrUndefined = (value: any): value is null | undefined => null_(value) || undefined(value);
|
export const nullOrUndefined = (value: any): value is null | undefined => null_(value) || undefined(value);
|
||||||
export const object = (value: any): value is object => !nullOrUndefined(value) && (function_(value) || isObject(value));
|
export const object = (value: any): value is object => !nullOrUndefined(value) && (function_(value) || isObject(value));
|
||||||
export const iterable = (value: any): value is IterableIterator<any> => !nullOrUndefined(value) && function_(value[Symbol.iterator]);
|
export const iterable = (value: any): value is IterableIterator<any> => !nullOrUndefined(value) && function_(value[Symbol.iterator]);
|
||||||
export const asyncIterable = (value: any): value is AsyncIterableIterator<any> => !nullOrUndefined(Symbol.asyncIterator) && function_(value[Symbol.asyncIterator]);
|
export const asyncIterable = (value: any): value is AsyncIterableIterator<any> => !nullOrUndefined(value) && function_(value[Symbol.asyncIterator]);
|
||||||
export const generator = (value: any): value is Generator => iterable(value) && function_(value.next) && function_(value.throw);
|
export const generator = (value: any): value is Generator => iterable(value) && function_(value.next) && function_(value.throw);
|
||||||
|
|
||||||
export const nativePromise = (value: any): value is Promise<any> =>
|
export const nativePromise = (value: any): value is Promise<any> =>
|
||||||
|
|
|
||||||
|
|
@ -455,14 +455,6 @@ if (isNode8orHigher) {
|
||||||
});*/
|
});*/
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNode10orHigher) {
|
|
||||||
test('is.asyncIterable', t => {
|
|
||||||
t.true(m.asyncIterable(Object.create({
|
|
||||||
[Symbol.asyncIterator]: () => {} // tslint:disable-line:no-empty
|
|
||||||
})));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
test('is.generator', t => {
|
test('is.generator', t => {
|
||||||
testType(t, 'generator');
|
testType(t, 'generator');
|
||||||
});
|
});
|
||||||
|
|
@ -612,6 +604,21 @@ test('is.iterable', t => {
|
||||||
t.false(m.iterable({}));
|
t.false(m.iterable({}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (isNode10orHigher) {
|
||||||
|
test('is.asyncIterable', t => {
|
||||||
|
t.true(m.asyncIterable({
|
||||||
|
[Symbol.asyncIterator]: () => {} // tslint:disable-line:no-empty
|
||||||
|
}));
|
||||||
|
|
||||||
|
t.false(m.asyncIterable(null));
|
||||||
|
t.false(m.asyncIterable(undefined));
|
||||||
|
t.false(m.asyncIterable(0));
|
||||||
|
t.false(m.asyncIterable(NaN));
|
||||||
|
t.false(m.asyncIterable(Infinity));
|
||||||
|
t.false(m.asyncIterable({}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
test('is.class', t => {
|
test('is.class', t => {
|
||||||
class Foo {} // tslint:disable-line
|
class Foo {} // tslint:disable-line
|
||||||
const classDeclarations = [
|
const classDeclarations = [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue