sum-types
lambda-ioc
sum-types | lambda-ioc | |
---|---|---|
8 | 2 | |
42 | 9 | |
- | - | |
5.9 | 0.0 | |
3 months ago | 14 days ago | |
TypeScript | TypeScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sum-types
-
Either type
I entirely agree about using symbols. sum-types does that.
-
Question about error handling in Typescript
With fp-ts and sum-types you'd handle this functionally like so:
-
type .kind checks vs. class instanceof checks
If you're looking to have discriminated unions like Rust, follow that section to roll your own or look for a library that's already implemented them. fp-ts has everything under the sun in a Haskell style, neverthrow has Rust-like Result and ResultAsync, and sum-types helps with the boilerplate of defining your own sum types.
-
Is there a more graceful way to create dependencies between object key settings?
I'd suggest sum-types. Instead of unsafe user-defined type guards you get safe pattern matching.
-
Best way to store persistent texts?
If you wanted to lean (more) into FP you could replace the Event type and buildPopup function with a sum type and pattern match respectively, as well as represent side effects like in popup with fp-ts' IO, make use of function composition, etc. The former in particular is great for readability:
-
Is there any known way to measure coverage of... types?
You can test types, at least in terms of asserting happy path types and whether a piece of code, runtime or purely type-level, should trigger a tsc type error. Here's an example using eslint-plugin-expect-type.
-
Has the unsoundness (will explain in the post) actually become a pitfall in practice?
Anywhere that overloads are needed will rely upon type assertions or the unsafety implicit in overloads, for example in fp-ts/function::pipe. It'll come up a lot with objects too when there isn't a preexisting primitive you can compose atop of, as in for example fp-ts-std/Record::pick. Something as generic as @unsplash/sum-types has assertions all over the place, though to be fair that's mostly again a case of struggles interacting with object types.
-
How to handle "mutable state" in a pure functional way
You might like @unsplash/sum-types also.
lambda-ioc
-
I wrote an strongly typed IoC container library (based on Diddly) for Deno & Node
The "final" result is a bit more feature complete, although much uglier if you check its internals (it's crazy how many type annotations I wrote there, and how complex they are), and I started to use it for real life projects :) : https://github.com/Coder-Spirit/lambda-ioc
- Is there any known way to measure coverage of... types?
What are some alternatives?
TypeScript - TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
InversifyJS - A powerful and lightweight inversion of control container for JavaScript & Node.js apps powered by TypeScript.
immutable-js - Immutable persistent data collections for Javascript which increase efficiency and simplicity.
genioc - Bloat-free and magical IoC-container for Typescript based on code-generation
tsd - Check TypeScript type definitions
eslint-plugin-expect-type - ESLint plugin with ^? Twoslash, $ExpectError, and $ExpectType type assertions. 🧩
nominal - Powerful nominal types for your Typescript project
mori - ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript
diddly - ƛ💉 Pure functional dependency injection for TypeScript