domain-objects
Version:
A simple, convenient way to represent domain objects, leverage domain knowledge, and add runtime validation in your code base.
10 lines (9 loc) • 593 B
TypeScript
import type { DomainObjectShape, Refable } from './Refable';
/**
* a generic which extracts the unique keys of a domain object
*
* note
* - domain.literals are unique on their full identity and so have no unique key, only their full definition
*/
export type RefKeysUnique<TDobj extends Refable<TShape, TPrimary, TUnique>, TShape extends DomainObjectShape = any, // todo: update DomainObjectShape -> DomainReferenceableInstance to enable extraction of primary and unique keys via types
TPrimary extends readonly string[] = any, TUnique extends readonly string[] = any> = TDobj['unique'];