Skip to content

Commit 03a4589

Browse files
committed
feat: add isIterable
1 parent a95d5c9 commit 03a4589

File tree

3 files changed

+37
-17
lines changed

3 files changed

+37
-17
lines changed

__tests__/is.test.ts

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,37 @@
1-
import { isNode, isBrowser, isIE, isInfinite, isDigit } from '../src/is';
1+
import { isNode, isBrowser, isIE, isInfinite, isDigit, isIterable } from '../src/is';
22

33
describe('is', () => {
44
test('is-platform', () => {
5-
expect(isNode()).toBe(true);
6-
expect(isBrowser()).toBe(true);
7-
expect(isIE()).toBe(false);
5+
expect(isNode()).toBeTruthy();
6+
expect(isBrowser()).toBeTruthy();
7+
expect(isIE()).toBeFalsy();
88
});
99

1010
test('is-Infinite', () => {
11-
expect(isInfinite(Infinity)).toBe(true);
12-
expect(isInfinite(-Infinity)).toBe(true);
13-
expect(isInfinite(1)).toBe(false);
14-
expect(isInfinite(0)).toBe(false);
15-
expect(isInfinite('1')).toBe(false);
11+
expect(isInfinite(Infinity)).toBeTruthy();
12+
expect(isInfinite(-Infinity)).toBeTruthy();
13+
expect(isInfinite(1)).toBeFalsy();
14+
expect(isInfinite(0)).toBeFalsy();
15+
expect(isInfinite('1')).toBeFalsy();
1616
});
1717

1818
test('is-Digit', () => {
19-
expect(isDigit('1')).toBe(true);
20-
expect(isDigit('1.2')).toBe(true);
21-
expect(isDigit('-1.2')).toBe(true);
22-
expect(isDigit(1.2)).toBe(true);
23-
expect(isDigit(-1.2)).toBe(true);
24-
expect(isDigit(Infinity)).toBe(false);
25-
expect(isDigit(-Infinity)).toBe(false);
26-
expect(isDigit('1.x')).toBe(false);
19+
expect(isDigit('1')).toBeTruthy();
20+
expect(isDigit('1.2')).toBeTruthy();
21+
expect(isDigit('-1.2')).toBeTruthy();
22+
expect(isDigit(1.2)).toBeTruthy();
23+
expect(isDigit(-1.2)).toBeTruthy();
24+
expect(isDigit(Infinity)).toBeFalsy();
25+
expect(isDigit(-Infinity)).toBeFalsy();
26+
expect(isDigit('1.x')).toBeFalsy();
27+
});
28+
29+
test('isIterable', () => {
30+
function* makeIterator() {
31+
yield 1;
32+
yield 2;
33+
}
34+
const it = makeIterator();
35+
expect(isIterable(it)).toBeTruthy();
2736
});
2837
});

src/is/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export { default as isPromise } from './is-Promise';
2626
export { default as isSymbol } from './is-Symbol';
2727
export { default as isDate } from './is-Date';
2828
export { default as isInfinite } from './is-Infinite';
29+
export { default as isIterable } from './is-Iterable';
2930

3031
export { default as isWindow } from './is-Window';
3132
export { default as isFile } from './is-File';

src/is/is-Iterable.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import isNil from './is-Nil';
2+
3+
function isIterable(value): value is Iterable<any> {
4+
if (isNil(value)) {
5+
return false;
6+
}
7+
return typeof value[Symbol.iterator] === 'function';
8+
}
9+
10+
export default isIterable;

0 commit comments

Comments
 (0)