cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
68 lines • 3.1 kB
TypeScript
/**
* Базовый класс типизированного элемента
*/
import { CSElement } from '../core/CSElement';
import { ITypedElement, TypedElementSchema, TypedFieldSchema, TypedValidationResult, FieldValidationResult, SerializedTypedElement, TypedElementEventType, TypedElementEvent } from '../types/typed-elements-interfaces';
import { ElementOptions } from '../types/interfaces';
/**
* Базовый класс для типизированных элементов
*/
export declare class TypedElement<T = any> extends CSElement implements ITypedElement<T> {
private _typeName;
private _schema;
private _typedData;
private _validationCache;
private _lastValidation;
private _eventEmitter;
private _manager;
constructor(value: any, schema: TypedElementSchema<T>, options?: ElementOptions, manager?: any);
get typeName(): string;
get schema(): TypedElementSchema<T>;
get isAbstract(): boolean;
get isSealed(): boolean;
get inheritanceChain(): string[];
private initializeFields;
/**
* Получает все поля с учетом наследования
*/
private getAllFields;
getTypedData(): Partial<T>;
setTypedData(data: Partial<T>): Promise<void>;
getField<K extends keyof T>(fieldName: K): T[K] | undefined;
setField<K extends keyof T>(fieldName: K, value: T[K]): Promise<void>;
validateType(): Promise<TypedValidationResult>;
validateField<K extends keyof T>(fieldName: K, value: T[K]): Promise<FieldValidationResult>;
private getActualType;
private isTypeCompatible;
canInheritFrom(typeName: string): boolean;
getInheritedFields(): TypedFieldSchema<T>[];
/**
* Проверяет, является ли элемент экземпляром указанного типа или его наследником
*/
isInstanceOf(typeName: string): boolean;
/**
* Проверяет, реализует ли элемент указанный интерфейс
*/
implementsInterface(interfaceName: string): boolean;
/**
* Получает метаданные о наследовании
*/
getInheritanceMetadata(): {
parentType: string | null;
implementedInterfaces: string[];
inheritanceDepth: number;
isComposite: boolean;
sourceSchemas?: string[];
};
serializeTyped(): SerializedTypedElement<T>;
cloneTyped(): Promise<ITypedElement<T>>;
private emitTypedEvent;
onTypedEvent(eventType: TypedElementEventType, listener: (event: TypedElementEvent<T>) => void): void;
offTypedEvent(eventType: TypedElementEventType, listener: (event: TypedElementEvent<T>) => void): void;
setData(key: string, value: any): Promise<void>;
getValidationCache(): Map<string, FieldValidationResult>;
getLastValidation(): TypedValidationResult | null;
clearValidationCache(): void;
static createTyped<T>(name: string, schema: TypedElementSchema<T>, data?: Partial<T>): Promise<TypedElement<T>>;
}
//# sourceMappingURL=TypedElement.d.ts.map