Add a new model class type.

This commit is contained in:
Madeorsk 2024-10-04 17:06:59 +02:00
parent 22bc42acba
commit 6635e2df38
Signed by: Madeorsk
GPG key ID: 677E51CA765BB79F
3 changed files with 9 additions and 4 deletions

View file

@ -19,7 +19,7 @@
</p> </p>
<p align="center"> <p align="center">
<img alt="Version 3.0.0" src="https://img.shields.io/badge/version-3.0.0-blue" /> <img alt="Version 3.0.1" src="https://img.shields.io/badge/version-3.0.1-blue" />
</p> </p>
## Introduction ## Introduction

View file

@ -1,6 +1,6 @@
{ {
"name": "@sharkitek/core", "name": "@sharkitek/core",
"version": "3.0.0", "version": "3.0.1",
"description": "TypeScript library for well-designed model architectures.", "description": "TypeScript library for well-designed model architectures.",
"keywords": [ "keywords": [
"deserialization", "deserialization",

View file

@ -34,6 +34,11 @@ export type SerializedModel<Shape extends ModelShape> = {
*/ */
export type Model<Shape extends ModelShape, IdentifierType = unknown> = ModelDefinition<Shape, IdentifierType> & PropertiesModel<Shape>; export type Model<Shape extends ModelShape, IdentifierType = unknown> = ModelDefinition<Shape, IdentifierType> & PropertiesModel<Shape>;
/**
* Type of a model class.
*/
export type ModelClass<Shape extends ModelShape, Identifier extends keyof Shape = any> = ConstructorOf<Model<Shape, IdentifierType<Shape, Identifier>>>;
/** /**
* Identifier type. * Identifier type.
*/ */
@ -91,7 +96,7 @@ export interface ModelDefinition<Shape extends ModelShape, IdentifierType>
export function model<Shape extends ModelShape, Identifier extends keyof Shape = any>( export function model<Shape extends ModelShape, Identifier extends keyof Shape = any>(
shape: Shape, shape: Shape,
identifier?: Identifier, identifier?: Identifier,
): ConstructorOf<Model<Shape, IdentifierType<Shape, Identifier>>> ): ModelClass<Shape, Identifier>
{ {
// Get shape entries. // Get shape entries.
const shapeEntries = Object.entries(shape) as [keyof Shape, UnknownDefinition][]; const shapeEntries = Object.entries(shape) as [keyof Shape, UnknownDefinition][];
@ -227,5 +232,5 @@ export function model<Shape extends ModelShape, Identifier extends keyof Shape =
return diff; // Return the difference. return diff; // Return the difference.
} }
} as unknown as ConstructorOf<Model<Shape, IdentifierType<Shape, Identifier>>>; } as unknown as ModelClass<Shape, Identifier>;
} }