Effect CommunityEC
Effect Community2y ago
49 replies
Victor Korzunin

Defining tags in TypeScript

folks, what is the difference of defining tags using this approaches:
/**
 * @since 1.0.0
 * @category models
 */
export interface ServerImpl {
  readonly run: <R, E, _>() => Effect.Effect<R, E, never>
}

/**
 * @since 1.0.0
 * @category tags
 */
export interface Server {
  readonly _: unique symbol
}

/**
 * @since 1.0.0
 * @category tags
 */
export const Server = Context.Tag<Server, ServerImpl>("@effect/experimental/DevTools/Server")
or
/**
 * @since 1.0.0
 * @category models
 */
export interface ServerImpl {
  readonly _: unique symbol
  readonly run: <R, E, _>() => Effect.Effect<R, E, never>
}

/**
 * @since 1.0.0
 * @category tags
 */
export const Server = Context.Tag<ServerImpl>("@effect/experimental/DevTools/Server")
Was this page helpful?