[HN Gopher] Automatically generating types for Cloudflare Workers
___________________________________________________________________
Automatically generating types for Cloudflare Workers
Author : tekkertje
Score : 30 points
Date : 2021-11-16 20:43 UTC (2 hours ago)
(HTM) web link (blog.cloudflare.com)
(TXT) w3m dump (blog.cloudflare.com)
| lukekim wrote:
| You can also do this manually with quicktype.io. We've found it
| useful from the number of languages it supports.
| eminence32 wrote:
| This is nice. I started to learn Cloudflare Workers a few months
| ago, and used TypeScript for my project. Since I was to this
| platform, I relied heavily on the TS types and tab completion in
| my IDE to explore the APIs and to make sure I was using them
| correctly. Unfortunately there were several gaps which lead to a
| less-than-ideal development experience and general confusion.
| kmf wrote:
| The story around types in Workers should be leaps-and-bounds
| better than it was a few months ago (thanks to the work
| outlined in this blog post) - would love to hear your thoughts
| on this new work, and hope it helps!
| brundolf wrote:
| Generated types are much better than manually-updated types when
| you've got a source of truth that lives in a different codebase,
| but I can't help feel like we could do better. I wish there were
| a "lingua franca" for type declarations that could be understood
| directly by different languages. Not only would you avoid the
| mess that is generated source code, but it could be a n^2 -> 2n
| situation, like LLVM and LSP, where you only have to translate to
| and from this common ground instead of to and from every
| combination of leaves.
|
| Unfortunately it might be pretty challenging given how different
| type systems can be. But maybe if you started with a subset of
| popular languages that have similar-enough type concepts?
| ZitchDog wrote:
| I think protocol buffers is pretty similar to what you're
| looking for.
| brundolf wrote:
| Maybe. Those seem pretty low-level though; I'm thinking of
| something abstract enough to be used with TypeScript or
| GraphQL just as easily as Rust or Kotlin. So byte-layouts are
| likely too specific.
|
| (Correct me if I'm wrong about how Protocol Buffers work)
|
| I think Serde is the closest thing I've seen to what I'm
| getting at; the way it can freely translate between XML and
| JSON and Rust structures without any help. But of course it's
| not a standalone schema language.
___________________________________________________________________
(page generated 2021-11-16 23:01 UTC)