Hegel
spartan-schema
Hegel | spartan-schema | |
---|---|---|
15 | 12 | |
2,109 | 431 | |
- | - | |
0.0 | 2.7 | |
3 months ago | about 1 year ago | |
JavaScript | TypeScript | |
MIT License | GNU General Public License v3.0 or later |
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.
Hegel
- Ask HN: Are “normal” vocabulary getting depleted by tech-brand hijacking?
-
Hegel – An advanced static type checker for JavaScript
unfortunately, the project is on pause for the time being [1]
[1]: https://github.com/JSMonk/hegel/issues/355#issuecomment-1075...
-
Ezno
Thank you. Just checked out the Bagel post (https://www.brandons.me/blog/the-bagel-language) and it looks really cool. Identifying pure functions (whether that is by syntax annotation or from synthesis) is a really good idea, gives me some ideas for doing function inlining in Ezno. I like the "Misc niceties" section, a few of those may of may not be on Ezno's todo list :)
The automatic / inferred generic restrictions is quite cool. https://hegel.js.org/ got there before me! Basic restriction modification is quite simple e.g. `(x) => Math.sin(x)`, x wants to be a number so can add that restriction. It gets more difficult with higher poly types. `(someObj) => Math.sin(someObj.prop1.prop2)` requires modifying not just `someObj` but a property on a property on it. And `(x, y) => printString(x + y)` requires doing even more complex things. But its definitely possible!
- Hegel: advanced static type checker for JavaScript
-
The TypeScript Experience
Can TypeScript be improved in this respect? Or, in broader terms, can a superset of JavaScript support a sound type system without becoming overly complicated?
-
Differences between TypeScript and Elm
An alternative to TypeScript can be Flow, a library maintained by Facebook. Flow, similarly to TypeScript, is not a sound type system. "Flow tries to be as sound and complete as possible. But because JavaScript was not designed around a type system, Flow sometimes has to make a tradeoff". Another alternative is Hegel, a type system that "attempts" to be sound. It is unclear to me if the attempt succeeded or not but it is worth checking.
-
An introduction to type programming in TypeScript – zhenghao
Check out Hegel[0], it uses Flow syntax, it's compatible w/ .d.ts type definitions and has a smarter type inference model than both TS and Flow IMHO.
[0] https://hegel.js.org/
- Hegel: a type checker for JavaScript with optional type annotations for preventing runtime type errors
spartan-schema
-
Hegel – An advanced static type checker for JavaScript
In the same vein, shameless plug for my own library, Spartan Schema:
https://github.com/ar-nelson/spartan-schema
It does the same thing as Zod, but is much smaller/simpler and its types always have a JSON representation.
- Spartan Schema: Like JSON Schema, but simpler, and with automatic Typescript types
- Ultra-minimal JSON schemas with TypeScript inference
What are some alternatives?
TypeScript - IO wrapper around TypeScript language services, allowing for easy consumption by editor plugins
ts-to-zod - Generate zod schemas from typescript types/interfaces
Hindley Milner Definitions - Runtime type checking for JS with Hindley Milner signatures
flow-runtime - A runtime type system for JavaScript with full Flow compatibility.
TypL - The Type Linter for JS
ts-simple-type - Relationship type checker functions for Typescript types.
io-ts - Runtime type system for IO decoding/encoding
slonik - A Node.js PostgreSQL client with runtime and build time type safety, and composable SQL.
ramda - :ram: Practical functional Javascript
swagger-ui - Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.
purescript - A strongly-typed language that compiles to JavaScript
typebox - Json Schema Type Builder with Static Type Resolution for TypeScript