JavaScript Code Contract Libraries?

后端 未结 4 791
花落未央
花落未央 2021-02-01 08:11

I am just starting up a new web application and I want to implement some form of contract\'esque style validation in my JavaScript. I did some quick googling, and came across Js

4条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-02-01 08:58

    One more - https://www.npmjs.com/package/bycontract It's a small library that expects JSDoc expressions (http://usejsdoc.org/) for a contract. A good chance for you are already familiar with the syntax.

    Just see it in action:

    // Simple test
    byContract( true, "boolean" ); // ok
    // Multiple Types
    byContract( 100, "string|number|boolean" ); // ok 
    // Optional Parameters
    function foo( bar, baz ) {
      byContract( arguments, [ "number=", "string=" ] );
    }
    

    Here kinda real-world example:

    /**
     * @param {number|string} sum
     * @param {Object.} payload
     * @param {function} cb
     * @returns {HTMLElement}
     */
    function foo( sum, payload, cb ) {
      // Test if the contract is respected at entry point 
      byContract( arguments, [ "number|string", "Object.", "function" ] );
      // .. 
      var res = document.createElement( "div" );
      // Test if the contract is respected at exit point 
      return byContract( res, HTMLElement );
    }
    // Test it 
    foo( 100, { foo: "foo" }, function(){}); // ok 
    foo( 100, { foo: 100 }, function(){}); // exception - ByContractError: Value of index 1 violates the contract `Object.` 
    

提交回复
热议问题