Hyperlinkv0.8.0-beta.28

Request

Request.Classconsteffect/Request.ts:363
new <
  A extends Record<string, any>,
  Success,
  Error = never,
  Context = never
>(
  args: Types.Equals<
    Omit<A, keyof Request<unknown, unknown>>,
    {}
  > extends true
    ? void
    : {
        readonly [P in keyof A as P extends keyof Request<any, any, any>
          ? never
          : P]: A[P]
      }
) => Request<Success, Error, Context> & Readonly<A>

Defines request types with TypeScript classes.

Details

Subclasses pass their data fields to super, and instances are marked as Request values while retaining the provided readonly fields.

Example (Defining request classes)

import { Request } from "effect"

class GetUser extends Request.Class<{ id: number }, string, Error> {
  constructor(readonly id: number) {
    super({ id })
  }
}

const getUserRequest = new GetUser(123)
console.log(getUserRequest.id) // 123
constructors
Source effect/Request.ts:36312 lines
export const Class: new<A extends Record<string, any>, Success, Error = never, Context = never>(
  args: Types.Equals<Omit<A, keyof Request<unknown, unknown>>, {}> extends true ? void
    : { readonly [P in keyof A as P extends keyof Request<any, any, any> ? never : P]: A[P] }
) => Request<Success, Error, Context> & Readonly<A> = (function() {
  function Class(this: any, args: any) {
    if (args) {
      Object.assign(this, args)
    }
  }
  Class.prototype = RequestPrototype
  return Class as any
})()
Referenced by 1 symbols