Add a new model class type.
This commit is contained in:
parent
22bc42acba
commit
62e62f962e
3 changed files with 9 additions and 4 deletions
|
@ -19,7 +19,7 @@
|
|||
</p>
|
||||
|
||||
<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>
|
||||
|
||||
## Introduction
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@sharkitek/core",
|
||||
"version": "3.0.0",
|
||||
"version": "3.0.1",
|
||||
"description": "TypeScript library for well-designed model architectures.",
|
||||
"keywords": [
|
||||
"deserialization",
|
||||
|
|
|
@ -34,6 +34,11 @@ export type SerializedModel<Shape extends ModelShape> = {
|
|||
*/
|
||||
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.
|
||||
*/
|
||||
|
@ -91,7 +96,7 @@ export interface ModelDefinition<Shape extends ModelShape, IdentifierType>
|
|||
export function model<Shape extends ModelShape, Identifier extends keyof Shape = any>(
|
||||
shape: Shape,
|
||||
identifier?: Identifier,
|
||||
): ConstructorOf<Model<Shape, IdentifierType<Shape, Identifier>>>
|
||||
): ModelClass<Shape, Identifier>
|
||||
{
|
||||
// Get shape entries.
|
||||
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.
|
||||
}
|
||||
|
||||
} as unknown as ConstructorOf<Model<Shape, IdentifierType<Shape, Identifier>>>;
|
||||
} as unknown as ModelClass<Shape, Identifier>;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue