bitcoinjs-lib/src/types.js

39 lines
850 B
JavaScript
Raw Normal View History

module.exports = function enforce(type, value) {
switch (type) {
// http://jsperf.com/array-typecheck-2
case 'Array': {
if (value != null && value.constructor === Array) return
break
}
// http://jsperf.com/boolean-typecheck
case 'Boolean': {
if (typeof value === 'boolean') return
break
}
case 'Buffer': {
if (Buffer.isBuffer(value)) return
break
}
// http://jsperf.com/number-constructor-v-isnan
case 'Number': {
if (typeof value === 'number') return
break
}
// http://jsperf.com/string-typecheck-2
case 'String': {
if (value != null && value.constructor === String) return
break
}
default: {
if (value instanceof type) return
}
}
throw new TypeError('Expected ' + (type.name || type) + ', got ' + value)
}