TYPED JS 
Support
Dynamic type checker for nodejs >= v4.0.0
It support only class syntax in order to have type checking all classes must be inherited from Type class
Type Inheritance
All class members must be defined in constructor super call otherwise if you try to assign member to initialized object
Type object will throw an type error. After object initialization object is prevented from extension
class User extends Type {
constructor(name, password) {
super({
username: Type.STRING,
password: Type.STRING
});
this.username = name;
this.password = password;
}
getUserName() {
return this.username;
}
setUserName(user) {
this.username = user;
}
}
var user = new User('Igor', 'Ivanovic');
user.getUserName();
user.setUserName(1)
user.assign = 1
user.destroy();
Constants
Type.OBJECT = "object";
Type.STRING = "string";
Type.ARRAY = "array";
Type.REGEX = "regexp";
Type.NUMBER = "number";
Type.BOOLEAN = "boolean";
Type.FUNCTION = "function";
Type.DATE = "date";
Type.UNDEFINED = "undefined";
Type.NULL = "null";
Type Functions
Type.isNull(value)
Check if value is nullable
Type.isNull(null);
Type.isObject(value)
Check if value is object
Type.isObject({});
Type.isObject([]);
Type.isRegExp(value)
Check if value is regular expression object
Type.isRegExp({});
Type.isRegExp(/abc/i);
Type.isDate(value)
Check if value is date object
Type.isDate({});
Type.isDate(new Date);
Type.isFunction(value)
Check if value is function object
Type.isFunction({});
Type.isFunction(function () {});
Type.isArray(value)
Check if value is array object
Type.isArray({});
Type.isArray([]);
Type.isNumber(value)
Check if value is number
Type.isNumber(1);
Type.isNumber(NaN);
Type.isNumber([]);
Type.isString(value)
Check if value is string
Type.isString(1);
Type.isString("");
Type.isBoolean(value)
Check if value is boolean
Type.isBoolean(1);
Type.isBoolean(true);
Type.isUndefined(value)
Check if value is undefined
Type.isUndefined(null);
Type.isUndefined(undefined);
Type.isInitialized(value)
Check if value is initialized, null is not considered as initialized
Type.isInitialized(null);
Type.isInitialized(undefined);
Type.getType(value)
Get type of value
Type.getType(null);
Type.getType(undefined);
Type.getType({});
Type.getType([]);
Type.assert(type, value)
Get type of value. Type should be valid type constant
Type.assert(Type.NULL, null);
Type.assert(Type.OBJECT, undefined);
Type.assert(Type.OBJECT, {});
Type.assert(Type.ARRAY, []);