Defining tags in TypeScript
folks, what is the difference of defining tags using this approaches: or
/**
* @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")/**
* @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")/**
* @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")/**
* @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")