assign-variable
v0.4.0
Published
assign a dynamically type checked value using an optional alternative value
Downloads
3
Readme
assign-variable
Assign dynamically incoming values at runtime with confidence.
Features:
- dynamically type checked against alternative values' type
- return alternative value in case type check fails
- emits a warning message event when type check fails
Example
const assign = require('assign-variable');
const model = Object.freeze({
alias: '',
name: '',
age: -1,
});
class Store {
constructor(settings){
// ensure settings is of type object at runtime
settings = assign(settings, {});
// using the model as type guide and possible alternative value
this.alias = assign(settings.alias, model.alias);
this.name = assign(settings.name, model.name);
this.age = assign(settings.age, model.age);
}
}
const store = new Store({ alias: 'jack', name: undefined, age: null });
console.log(store);
// Store { alias: 'jack', name: '', age: -1 }
In more detail
myVar = assign('ok', undefined);
// ok
// the first value is validated by the second values' type
// when types match, the first value will be returned
myVar = assign('!', '?');
// !
// for debugging you can allow for warning message events to
// output to console (this is optional)
assign.onWarn(console.warn);
// when the types don't match, the second (alternative) value will be returned
// in addition a warning message event will be emitted
myVar = assign('', 0);
// 0
// the message event emitted:
// {
// sender: 'assign-variable',
// type: 'warn',
// id: '',
// text: 'type mismatch encountered'
// value: ''
// }
// you can add an id as a third argument that in case of type mismatch
// the message event can show the id if needed for debugging
myVar = assign('?', 0, 'myVar');
// 0
// the message event emitted:
// {
// sender: 'assign-variable',
// type: 'warn',
// id: 'myVar',
// text: 'type mismatch encountered'
// value: '?'
// }
change log
0.3.0
- adds value property to warning messages, now you can for example filter out messages based on value or type of value
- adds mocha tests