21 lines
473 B
Plaintext
21 lines
473 B
Plaintext
|
'use strict';
|
||
|
|
||
|
const checkType = (name, value, types) => {
|
||
|
const valid = types.some(type => {
|
||
|
const typeofType = typeof type;
|
||
|
if (typeofType === 'string') {
|
||
|
return typeof value === type;
|
||
|
}
|
||
|
|
||
|
return value instanceof type;
|
||
|
});
|
||
|
|
||
|
if (!valid) {
|
||
|
const names = types.map(type => typeof type === 'string' ? type : type.name);
|
||
|
|
||
|
throw new TypeError(`Expected '${name}' to be a type of ${names.join(' or ')}, got ${typeof value}`);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
module.exports = checkType;
|