diff --git a/.changeset/lucky-poets-guess.md b/.changeset/lucky-poets-guess.md new file mode 100644 index 00000000000..3a4ed83bb91 --- /dev/null +++ b/.changeset/lucky-poets-guess.md @@ -0,0 +1,5 @@ +--- +"effect": minor +--- + +Add `Success` type util for `Config`. diff --git a/packages/effect/dtslint/Config.ts b/packages/effect/dtslint/Config.ts index f18654e53a3..820eb62da59 100644 --- a/packages/effect/dtslint/Config.ts +++ b/packages/effect/dtslint/Config.ts @@ -1,5 +1,5 @@ import * as Config from "effect/Config" -import { pipe } from "effect/Function" +import { hole, pipe } from "effect/Function" declare const string: Config.Config declare const number: Config.Config @@ -45,3 +45,18 @@ Config.all(numberRecord) // $ExpectType Config<{ [x: string]: number; }> pipe(numberRecord, Config.all) + +// ------------------------------------------------------------------------------------- +// Success +// ------------------------------------------------------------------------------------- + +// $ExpectType string +hole>() + +// $ExpectType number +hole>() + +const object = Config.all({ a: string, b: number }) + +// $ExpectType { a: string; b: number; } +hole>() diff --git a/packages/effect/src/Config.ts b/packages/effect/src/Config.ts index afb95575695..294157446c6 100644 --- a/packages/effect/src/Config.ts +++ b/packages/effect/src/Config.ts @@ -51,6 +51,12 @@ export declare namespace Config { } } + /** + * @since 2.5.0 + * @category models + */ + export type Success> = [T] extends [Config] ? _A : never + /** * @since 2.0.0 * @category models