API reference / @evolu/common / Type / record
Function: record()
function record<
KeyName,
KeyT,
KeyInput,
KeyError,
KeyParent,
KeyParentError,
Value,
>(
keyType,
valueType,
): RecordType<
KeyName,
KeyT,
KeyInput,
KeyError,
KeyParent,
KeyParentError,
Value
>;
Defined in: packages/common/src/Type.ts:2549
Record of a key Type and value Type.
- The input must be a plain object (validated by isPlainObject).
- Each key is validated/transformed by the
keyType. - Each value is validated/transformed by the
valueType.
The resulting type is Readonly<Record<KeyT, ValueT>>.
Example
const StringToNumberRecord = record(String, Number);
// ok({ "a": 1, "b": 2 })
StringToNumberRecord.from({ a: 1, b: 2 });
// err => "Key" because 42 is not a string key
StringToNumberRecord.from({ 42: 1, b: 2 });
// err => "Value" because "x" is not a number
StringToNumberRecord.from({ a: "x", b: 2 });
Type Parameters
| Type Parameter |
|---|
KeyName extends string |
KeyT extends string |
KeyInput extends string |
KeyError extends TypeError<Capitalize<string>> |
KeyParent extends string |
KeyParentError extends TypeError<Capitalize<string>> |
Value extends AnyType |
Parameters
| Parameter | Type |
|---|---|
keyType | Type<KeyName, KeyT, KeyInput, KeyError, KeyParent, KeyParentError> |
valueType | Value |
Returns
RecordType<KeyName, KeyT, KeyInput, KeyError, KeyParent, KeyParentError, Value>