class BaseType { constructor(name, ord) { this.name = name; this.ord = ord; } get value () { return this.name; } isCompatible (another) { if(another instanceof BaseType) { return this.name === another.name && this.ord === another.ord; } return false; } } // Base types names are the same as i18n ui type keys export const BaseTypes = Object.freeze({ INTEGER: new BaseType("integer", 0), REAL: new BaseType("real", 1), STRING: new BaseType("text", 2), BOOLEAN: new BaseType("boolean", 3), VOID: new BaseType("void", 4), UNDEFINED: new BaseType("undefined", 5) })