Comments (2)
It seems that ts encounters difficulty inferring the correct type when optional
is used tacitly:
const x = S.string.pipe(S.optional); // error
const y = pipe(S.string, S.optional); // error
This might be due to the presence of different overloads in the optional
signature. In both cases above, the inferred schema is Schema<unknown, unknown>
.
I'm unsure about how to resolve this issue. However, isn't tacit usage never recommended?
from effect.
It seems that ts encounters difficulty inferring the correct type when
optional
is used tacitly:const x = S.string.pipe(S.optional); // error const y = pipe(S.string, S.optional); // errorThis might be due to the presence of different overloads in the
optional
signature. In both cases above, the inferred schema isSchema<unknown, unknown>
.I'm unsure about how to resolve this issue. However, isn't tacit usage never recommended?
While tacit usage is never recommended pipe
is kind of an exceptional case, otherwise we could also say that pipe([0, 1], ReadonlyArray.map((n) => n + 1)
is discouraged.
Re overloads, this is indeed the issue, namely overload selection, I think we need to decide if the reason we have overloads is absolute necessity or if we can encode what we do with overloads with a conditional return type (that would solve tacit usage).
It's up to @gcanti if you decide that overloads are needed then feel free to close the issue as "intended behaviour"
from effect.
Related Issues (20)
- CLI: `Options.repeated` does not seem to work when using an option's alias
- ReadonlyArray.sortWith does not maintain non-empty
- ReadonlyArray refinement tacid usage, odd behavior or limitation? HOT 1
- Code documentation doesn't reflect actual changes in the code ("provideContext" was renamed to "provide")
- CLI: `Options.repeated` causes CLI to hang in certain senarios HOT 4
- Schema: Allow non-async Effects to be used with `*Sync` combinators
- CLI: nesting args/options within objects causes stack overflow at `reconstructConfigTree`
- From Discord: Unexpected Logs from Test and AnotherTest
- Schema: default class field constructors HOT 6
- CLI: Enable prompt commands to be able to have `Options` and `Args` HOT 1
- Type error when using `S.literal` and `S.optional` with `default` HOT 2
- Add option to preserve excess properties from S.decode, S.parse
- Tree shaking question HOT 3
- Schema: expose `literals` and `fields` HOT 14
- From Discord: Adding a Service to an Existing Runtime
- Regression: Allow specifying empty object in Data.TaggedEnum HOT 5
- Persisted Cache for preheating on startup HOT 2
- ReadOnly Array flatMap stack overflow HOT 3
- When using SchemaTaggedError with Match, I got an Effect.Effect<unknow, unknown, unknown> HOT 3
- JSONSchema not working as expected with `S.optional` HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from effect.