src/assertive.js
function getNameOfType(x) {
  switch (false) {
    case !(x == null):
      return `${x}`; // null / undefined
    case !is.String(x):
      return x;
    case !is.Function(x):
      return x.name;
    case !is.NaN(x):
      return 'NaN';
    default:
      return x;
  }
}
function getNameOfType(x) {
  switch (false) {
    case !(x == null):
      return `${x}`; // null / undefined
    case !is.String(x):
      return x;
    case !is.Function(x):
      return x.name;
    case !is.NaN(x):
      return 'NaN';
    default:
      return x;
  }
}
function getNameOfType ( x ) { switch ( false ) { case ! ( x == null ) : return ` ${ x } ` ; // null / undefined case ! is . String ( x ) : return x ; case ! is . Function ( x ) : return x . name ; case ! is . NaN ( x ) : return 'NaN' ; default : return x ; } }
translates any argument we were meant to interpret as a type, into its name
translates any argument we were meant to interpret as a type into its name