api / type

RecordSignalTrap

Record trap for plain objects with property access methods.

Source: src/api/traps/types.ts

Record trap for plain objects with property access methods.

Signature

export type RecordSignalTrap<T extends Record<string, unknown>> =
  GenericTrap<T> & {
    /** Returns a derived signal for a specific property. */
    prop: <K extends keyof T>(key: K) => DerivedSignal<T[K]>;
    /** Returns an object with all properties as derived signals. */
    get props(): { [key in keyof T]: DerivedSignal<T[key]> };
    /** Returns the object's keys as a derived signal. */
    get keys(): DerivedSignal<string[]>;
  };

/**
 * Union type for all trap types, determined by the value type.
 *
 * @template T - The type of value to trap
 *
 * @remarks
 * - Number values → NumberSignalTrap
 * - String values → StringSignalTrap
 * - Array values → ArraySignalTrap
 * - Plain objects → RecordSignalTrap
 * - Other types → GenericTrap
 */
export type SignalTrap<T> = T extends number
  ? NumberSignalTrap
  : T extends string
  ? StringSignalTrap
  : T extends (infer I)[]
  ? ArraySignalTrap<I>
  : T extends Record<string, unknown>
  ? RecordSignalTrap<T>
  : GenericTrap<T>;

Type Parameters

  • The object type

Remarks

  • Throws if the value is not a plain object