@nivinjoseph/n-domain
Version:
Domain Driven Design and Event Sourcing based framework for business layer implementation
24 lines (17 loc) • 571 B
text/typescript
import { given } from "@nivinjoseph/n-defensive";
import { serialize } from "@nivinjoseph/n-util";
import { DomainObject } from "./domain-object.js";
// public
export abstract class DomainEntity<TData extends object = object> extends DomainObject<TData>
{
private readonly _id: string;
public get id(): string { return this._id; }
protected constructor(data: Pick<DomainEntity, "id">)
{
super(data as any);
const { id } = data;
given(id, "id").ensureHasValue().ensureIsString();
this._id = id;
}
}