isInstance()
isInstance()
isInstance()Checks if any value is an instance of a given constructor.
const isInstance = <Obj, Payload extends object>(
value: any,
constructor: Constructor<Obj>,
callback: ResultCallback<
any,
{ ctor: typeof constructor } & Payload
> = resultCallback,
payload?: Payload
): value is Obj =>
callback(
isObject(value) &&
typeof constructor === 'function' &&
constructor instanceof Function
? value instanceof constructor
: false,
value,
{ ...payload, ctor: constructor } as any
);Generic type variables
Obj
ObjA generic type variable Obj, by default captured from the provided constructor, indicates the type of generic type Constructor, and the type of value parameter via the return type value is Obj.
Payloadextendsobject
PayloadextendsobjectThe Payload generic type variable constrained by object indicates the type of optional parameter payload of the supplied callback function and payload optional parameter of the isInstance() function from which it captures its value.
Parameters
value: any
value: anyThe value of any type to be an instance of a given constructor.
constructor: Constructor<Obj>
constructor: Constructor<Obj>A class or function that specifies the type of Constructor.
callback: ResultCallback<any, { ctor: typeof constructor } & Payload>
callback: ResultCallback<any, { ctor: typeof constructor } & Payload>A callback function of ResultCallback type with parameters, the value that has been checked, the result of this check, and payload of generic type variable Payload with optional properties from the provided payload, to handle them before the result return. By default, it uses resultCallback() function.
payload?: Payload
payload?: PayloadAn optional object of the generic type variable Payload is assigned to the payload of the given callback function.
Return type
value is Obj
value is ObjThe return type is a boolean as the result of its statement, indicating the value is a generic type variable Obj by default of type captured from the supplied constructor.
Returns
The return value is a boolean indicating whether the provided value is an instance of a given constructor.
Example usage
Basic usage
// Example usage.
import { isInstance } from '@angular-package/type';
// Classes.
class Some { x = 127; }
class Two { y = 'Lorem ipsum'; }
const SOME = new Some();
const TWO = new Two();
isInstance(TWO, Some); // false
isInstance(SOME, Some); // true
isInstance<Some, object>(TWO, Two); // true and type error
isInstance(new Array(), Array), // Returns `true` as `value is Array`
isInstance(new Boolean(), Boolean), // Returns `true` as `value is Boolean`
isInstance(new Date(), Date), // Returns `true` as `value is Date`
isInstance(new Error(), Error), // Returns `true` as `value is Error`
isInstance(new Function(), Function), // Returns `true` as `value is Function`
isInstance(new Map(), Map), // Returns `true` as `value is Map`
isInstance(new Number(), Number), // Returns `true` as `value is Number`
isInstance(new Object(), Object), // Returns `true` as `value is Object`
isInstance(new RegExp(/^[]/), RegExp), // Returns `true` as `value is RegExp`
isInstance(new Set(), Set), // Returns `true` as `value is Set`
isInstance(new String(), String), // Returns `true` as `value is String`Parameters callback and payload
callback and payload // Example usage with callback and payload.
import { isInstance } from '@angular-package/type';
// Classes.
class Some { x = 127; }
class Two { y = 'Lorem ipsum'; }
const SOME = new Some();
const TWO = new Two();
isInstance(TWO, Some, (result, value, payload) => {
value // Returns the provided `Two`
if (payload) {
payload.className // Returns `'Some'`
payload.ctor // Returns the provided `Some`
}
return result;
}, { className: Some });Function constructor
// Example usage with function constructor.
import { isInstance } from '@angular-package/type';
// Function constructor.
function functionConstructor(this: any, ...args: any[]): any {
if (args) {
args.forEach((arg, index: number) => this[index] = arg[index]);
}
return this;
}
const anyInstance: any = new (functionConstructor as any)('First name', 'Sur name', 27);
isInstance(anyInstance, functionConstructor as any); // trueLast updated
Was this helpful?