tcomb
Version:
Type checking and DDD for JavaScript
26 lines (21 loc) • 529 B
JavaScript
var isType = require('./isType');
function isRefinement(type) {
return isType(type) && type.meta.kind === 'subtype';
}
function getPredicates(type) {
return isRefinement(type) ?
[type.meta.predicate].concat(getPredicates(type.meta.type)) :
[];
}
function getUnrefinedType(type) {
return isRefinement(type) ?
getUnrefinedType(type.meta.type) :
type;
}
function decompose(type) {
return {
predicates: getPredicates(type),
unrefinedType: getUnrefinedType(type)
};
}
module.exports = decompose;