const schemas = {
one: Schema.Struct({ name: Schema.String }),
two: Schema.Number
} as const
type Schemas = typeof schemas
const namedDecode = <
TName extends keyof Schemas,
TFrom extends Schemas[TName]['Encoded'],
> (name: TName, input: TFrom) => {
const schema = schemas[name]
const decoder = Schema.decodeUnknown(schema)
// Argument of type 'Struct<{ name: typeof String$; }> | typeof Number$' is not assignable to parameter of type 'Schema<{ readonly name: string; }, { readonly name: string; }, never>'.
return decoder(input)
}
const resOne = namedDecode('one', { name: 'hello' })
// Effect.Effect<{ name: string }, ParseError, never>
const resTwo = namedDecode('two', 2)
// Effect.Effect<{ name: string }, ParseError, never>
const schemas = {
one: Schema.Struct({ name: Schema.String }),
two: Schema.Number
} as const
type Schemas = typeof schemas
const namedDecode = <
TName extends keyof Schemas,
TFrom extends Schemas[TName]['Encoded'],
> (name: TName, input: TFrom) => {
const schema = schemas[name]
const decoder = Schema.decodeUnknown(schema)
// Argument of type 'Struct<{ name: typeof String$; }> | typeof Number$' is not assignable to parameter of type 'Schema<{ readonly name: string; }, { readonly name: string; }, never>'.
return decoder(input)
}
const resOne = namedDecode('one', { name: 'hello' })
// Effect.Effect<{ name: string }, ParseError, never>
const resTwo = namedDecode('two', 2)
// Effect.Effect<{ name: string }, ParseError, never>