timeoutLog.js:

var apiCheckFactory = require('api-check');

var myCheck = apiCheckFactory();

module.exports = timeoutLog;

var api = [
  myCheck.number,
  myCheck.shape({
    name: myCheck.string
  }),
  myCheck.func.optional
];

function timeoutLog(time, person, callback) {
  myCheck.throw(api, arguments);

  setTimeout(function() {
    console.log('Time is up for ' + person.name + '!');
    callback && callback(person);
  }, time);
}

 

index.js:

// just giving me some space...
console.log('\n------\n');


var timeoutLog = require('./timeoutLog');

var person = {
  name: 'Jane'
};

timeoutLog(300, {name: 'Joe'}, function(thePerson) {
  console.log(
    'Person is the same? ' + (person === thePerson)
  );
});

 

Error message something like:

Error: apiCheck failed! `Argument 1` passed, `value` at `Argument 2` must be `String`

You passed:
[
  "wHY+jgNSE0HaoLsMgqkF4uGBX33bf6orJcLVGD0MdFx+tPoPnoJ9EreqOxuUixXoEOI2nGwJb8sXFAyrnXSjMpD98OVj0wg2menNJ65LzEtw3YYBsBZ4yzRtI6PD13zUy+R3S7WIhcWI30V+jZShvP5J2rm4=",
  true
]

With the types:
[
  "string",
  "boolean"
]

The API calls for:
[
  "String",
  "String"
]