byContract
Search…
⌃K

Combinations

Sometimes we allow function to accept different sequences of types. Let’s take an example:
function andLogAndFinish( spec, tracker, done ) {
validate( "SOF|SZF|OOF|OZF", [ spec, tracker, done ] )
//...
}
Where the following sequences of types valid:
  • string, object, function
  • string, null, function
  • object, object, function
  • object, null, function
import { validateCombo } from "bycontract";
const CASE1 = [ "string", TRACKER_OPTIONS, "function" ],
CASE2 = [ "string", null, "function" ],
CASE3 = [ SPEC_OPTIONS, TRACKER_OPTIONS, "function" ],
CASE4 = [ SPEC_OPTIONS, null, "function" ];
validateCombo( arguments, [ CASE1, CASE2, CASE3, CASE4 ] );
Function validateCombo throws exception when none of the cases is valid