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:2201
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
key
Type. - Each value is validated/transformed by the
value
Type.
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
>