Runtime javascript proptypes check, for user defined classes
MIT License
Runtime javascript proptypes check, only for user defined classes. Implemented using ES6 features (Proxy and Symbol) >=8.0.0
npm install proxy-typer --save
Model.propTypes = {
exampleProp: Number
};
Model.propTypes = {
exampleProp: {type: String, required: true}
};
Model.propTypes = {
exampleProp: {type: Number, required: true, cast: parseInt}
};
Model.propTypes = {
setValue: {type: Function, args: [Number, String], return: Object};
}
Model.propTypes = {
setValue: {type: Function, args: [{type: Number}, {type: String, required: false}]};
}
Model.propTypes = {
setValue: {type: AsyncFunction, args: [Number, String], cast: (...args)=> [...args], return: String};
}
const {ProxyTyper, AsyncFunction} = require("proxy-typer");
class Test {
constructor(value, number) {
this.value = value;
this.number = number;
}
setValue(val) {
this.number = val;
return this.number;
}
async getValue() {
return this.number.toString();
}
}
Test.propTypes = {
value: String, // is same like {type: String}
number: Number, // if prop isn't required then {type: Number, required: false}
setValue: {type: Function, args: [{type: Number}]}, // if function need to return value then add {return: [Type]}
getValue: {type: AsyncFunction, return: String}
};
const TestModel = ProxyTyper(Test);
const test = new TestModel("test", 45);
test.setValue(3);
test.getValue();