createRecordType

See source code

Creates a new RecordType with the specified configuration.

This factory function creates a RecordType that can be used to create, validate, and manage records of a specific type within a store. The resulting RecordType can be extended with default properties using the withDefaultProperties method.

function createRecordType<R extends UnknownRecord>(
  typeName: R["typeName"],
  config: {
    ephemeralKeys?: {
      readonly [K in Exclude<keyof R, "id" | "typeName">]: boolean;
    };
    scope: RecordScope;
    validator?: StoreValidator<R>;
  },
): RecordType<R, keyof Omit<R, "id" | "typeName">>;

Example

interface BookRecord extends BaseRecord<"book", RecordId<BookRecord>> {
  title: string;
  author: string;
  inStock: boolean;
}

const Book = createRecordType<BookRecord>("book", {
  scope: "document",
  validator: bookValidator,
});

Parameters

NameDescription

typeName

R["typeName"];

The unique type name for this record type

config

{
  ephemeralKeys?: {
    readonly [K in Exclude<
      keyof R,
      "id" | "typeName"
    >]: boolean;
  };
  scope: RecordScope;
  validator?: StoreValidator<R>;
};

Configuration object containing validator, scope, and ephemeral keys

Returns

RecordType<R, keyof Omit<R, "id" | "typeName">>;

A new RecordType instance for creating and managing records

Prev
createMigrationSequence
Next
devFreeze