export abstract class Type { /** * Checks whether `this` type is equal to `otherType`. * @param otherType A second type * @returns Returns true, if `this` type is equal to `otherType`, otherwise false. */ abstract equals(otherType: Type): boolean; /** * Checks whether values of `this` type are assignable to variables of `otherType`. * @param otherType A second type * @returns Returns true, if values of `this` type are assignable to variables of `otherType`, otherwise false. */ abstract isAssignableTo(otherType: Type): boolean; /** * @returns String representation of the type. */ abstract toString(): string; /** * Shortcut to check whether `this` represents pseuCo's *int*-type. */ public get isIntType() : boolean { return false; } /** * Shortcut to check whether `this` represents pseuCo's *string*-type. */ public get isStringType() : boolean { return false; } /** * Shortcut to check whether `this` represents pseuCo's *bool*-type. */ public get isBoolType() : boolean { return false; } /** * Shortcut to check whether `this` represents pseuCo's *void*-type. */ public get isVoidType() : boolean { return false; } /** * Shortcut to check whether `this` represents pseuCo's *condition*-type. */ public get isConditionType() : boolean { return false; } /** * Shortcut to check whether `this` represents pseuCo's *lock*-type. */ public get isLockType() : boolean { return false; } /** * Shortcut to check whether `this` represents pseuCo's *agent*-type. */ public get isAgentType() : boolean { return false; } /** * Shortcut to check whether `this` represents pseuCo's array type. */ public get isArrayType() : boolean { return false; } /** * Shortcut to check whether `this` represents pseuCo's channel type. */ public get isChannelType() : boolean { return false; } }