60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Rtts-Assert
 | |
| 
 | |
| A run-time type assertion library for JavaScript.
 | |
| Designed to be used with [Traceur](https://github.com/google/traceur-compiler).
 | |
| 
 | |
| All sources are in ES6 format and have the suffix `.es6`. They don't depend on any runtime
 | |
| and can be used by any modern ES6 -> ES5 transpiler.
 | |
| 
 | |
| As a convenience, we provide you with `es5build.js`, a script to transpile the sources into es5
 | |
| using [Google Traceur](https://github.com/google/traceur-compiler/).
 | |
| 
 | |
| License: Apache MIT 2.0
 | |
| 
 | |
| ## API
 | |
| 
 | |
| ```
 | |
| // Asserting APIs:
 | |
| // - generated by Traceur (based on type annotations)
 | |
| // - can be also used in tests for instance
 | |
| assert.type(something, Type);
 | |
| assert.returnType(returnValue, Type);
 | |
| assert.argumentTypes(firstArg, Type, secondArg, Type);
 | |
| 
 | |
| // this can be used anywhere in the code
 | |
| // (useful inside test, when we don't wanna define an interface)
 | |
| assert(value).is(...)
 | |
| 
 | |
| 
 | |
| // Custom type assert:
 | |
| // - i have a custom type
 | |
| // - adding an assert methos
 | |
| assert.define(MyUser, function(value) {
 | |
|   assert(value).is(Type, Type2); // or
 | |
|   assert(value, 'name').is(assert.string);
 | |
|   assert(value, 'contact').is(assert.structure({
 | |
|     email: assert.string,
 | |
|     cell: assert.string
 | |
|   }));
 | |
|   assert(value, 'contacts').is(assert.arrayOf(assert.structure({email: assert.string})));
 | |
| });
 | |
| 
 | |
| 
 | |
| // Define interface (an empty type with assert method)
 | |
| // - returns an empty class with assert method
 | |
| var Email = assert.define('IEmail', function(value) {
 | |
|   assert(value).is(String);
 | |
| 
 | |
|   if (value.indexOf('@') !== -1) {
 | |
|     assert.fail('has to contain "@"');
 | |
|   }
 | |
| });
 | |
| 
 | |
| 
 | |
| // Predefined types
 | |
| assert.string
 | |
| assert.number
 | |
| assert.boolean
 | |
| assert.arrayOf(...types)
 | |
| assert.structure(object)
 | |
| ``` |