Skip to main content

TypeTools Interface

Table of Contents

  1. Overview
  2. Classes
  3. Functions
  4. Proxy Handlers
  5. Utility Functions
  6. Type Extensions
  7. Context and Settings

Overview

The TypeToolsBase bas class serves as a utility for managing type extensions, validation, and manipulation within a TypeScript project. It facilitates:

  • Type checking and validation
  • Extension management for types
  • Proxy-based handling for dynamic collections like lists and dictionaries
  • Serialization and deserialization of data addresses

Classes & Interfaces

Type Extensions

The TypeToolsExtension interface provides a structure for defining extensions that can add, retrieve, and check data on various types.

export interface TypeToolsExtension {
getExtensionData: (target: any) => TypeToolsExtensionData;
implementOn: (target: any) => void;
typeCheck: (target: any) => boolean;
settings: TypeToolsSettings;
}

TypeToolsBase

  • Purpose: Acts as the core utility class for type handling and extensions.
  • Features:
    • Extension Management: Add, get, and check extensions for types.
    • Type Checking: Ensure objects conform to expected type specifications.
    • Skeleton and Sample Instances: Generate template or example instances of types.
export class TypeToolsBase {
static topError: Error;
static topCancel: Error;
// ... more static properties and methods
settings: TypeToolsSettings;

constructor(settings?: Partial<TypeToolsSettings>) {
this.settings = settings ? Object.assign(new TypeToolsSettings(), settings) : TypeToolsSettings;
}

addExtension(target: any, extension: any) { /* implementation */ }
getExtension(target: any) { /* implementation */ }
init(target: any) { /* implementation */ }
}

Model Definition Helpers

ModelList

  • Purpose: Provides a convenient way to create typed lists.
  • Usage: ModelList(type, init, parent, prop, order)
export function ModelList<T>(type?: Class<T>, init?: Array<T>, parent?: any, prop?: string, order: number = 1) {
if (!init) init = [];
return new List(init, parent, prop, type, order);
}

ModelDict

  • Purpose: Provides a convenient way to create typed dictionaries.
  • Usage: ModelDict(init, parent, prop, rubric)
export function ModelDict<T>(init?: T, parent?: any, prop?: string, rubric?: { [propName: string]: Class<any> }) {
return new Dict(init, parent, prop, rubric) as T;
}

Proxy Handlers

The file utilizes Proxy Handlers to ensure type safety in dynamic data structures like List and Dict. These handlers manage set and get operations to enforce type conformity and handle validation errors gracefully.


Utility Functions

  • isUndef: Checks if a variable is undefined or null.
  • isFunction: Determines if a variable is a function.
  • isArray: Determines if a variable is an array.
  • isObject: Determines if a variable is an object.
  • isModelInstance: Checks if an object is a type-checked model instance.
  • isModelCollection: Checks if an object is a type-checked model collection.