Add is.directInstanceOf()

This commit is contained in:
Brandon Smith 2017-12-09 00:01:39 -05:00
parent 4ce2ee9d39
commit fe344fd7eb
3 changed files with 27 additions and 0 deletions

View file

@ -136,6 +136,20 @@ is.boundFunction(function () {});
#### Miscellaneous
##### .directInstanceOf(value, klass)
Returns `true` if value is a direct instance of a class of type `klass`.
```js
class ErrorSubclass extends Error {};
is.directInstanceOf(new Error(), Error);
//=> true
is.directInstanceOf(new ErrorSubclass(), Error);
//=> false
```
##### .truthy(value)
Returns `true` for all values that evaluate to true in a boolean context:

View file

@ -162,6 +162,8 @@ namespace is { // tslint:disable-line:no-namespace
export const arrayBuffer = isObjectOfType(TypeName.ArrayBuffer);
export const sharedArrayBuffer = isObjectOfType(TypeName.SharedArrayBuffer);
export const directInstanceOf = (instance: any, klass: any) => object(instance) && object(klass) && Object.getPrototypeOf(instance) === klass.prototype;
export const truthy = (value: any) => Boolean(value);
export const falsy = (value: any) => !value;

View file

@ -507,6 +507,17 @@ test('is.dataView', t => {
testType(t, 'arrayBuffer');
});
test('is.directInstanceOf', t => {
const error = new Error();
const errorSubclass = new ErrorSubclassFixture();
t.true(m.directInstanceOf(error, Error));
t.true(m.directInstanceOf(errorSubclass, ErrorSubclassFixture));
t.false(m.directInstanceOf(error, ErrorSubclassFixture));
t.false(m.directInstanceOf(errorSubclass, Error));
});
test('is.truthy', t => {
t.true(m.truthy('unicorn'));
t.true(m.truthy('🦄'));