David Blass Profile Banner
David Blass Profile
David Blass

@ssalbdivad

2,251
Followers
438
Following
377
Media
2,776
Statuses

Full-time open source dev and author of @arktypeio , TypeScript's 1:1 validator optimized from editor to runtime⛵ ()🌱

Boston, MA
Joined November 2013
Don't wanna be here? Send us removal request.
Pinned Tweet
@ssalbdivad
David Blass
5 months
I'm looking for some consulting hours in January to support my full-time work on @arktypeio . I have unique expertise in these areas: - Type-safety for complex APIs - Type optimization (avoid editor lag) - Type tests/benchmarks Retweets would also be a big help! Details⬇️
2
39
127
@ssalbdivad
David Blass
3 months
A lot of library authors end up with generics requiring a crazy number of ordered parameters. This feels fine when you're defining them, but is awful to read and maintain. If you have types with more ~3 ordered parameters, you need the solution below⬇️
Tweet media one
7
10
191
@ssalbdivad
David Blass
2 months
This code only looks complex to people who don't often write type-level code. It's not "superhuman" to do something if the only reason most devs can't is because the need for them to learn it doesn't come up. Also, there's much better ways to do this and the comments suck.
@ataiiam
Atai Barkai
2 months
@yoheinakajima ceiling is being raised. cursor's copilot helped us write "superhuman code" for a critical feature. We can read this code, but VERY few engineers out there could write it from scratch. Took lots of convincing too. "come on, this must be possible, try harder". and obviously- done
Tweet media one
459
57
590
12
6
138
@ssalbdivad
David Blass
1 month
Hey @prisma , If you need some help with these (you do), I do consulting😉
@tantaman
Matt Wonlaw
1 month
Found a hornets nest on tech twitter. Here's some TypeScript types from Prisma:
Tweet media one
24
10
161
4
2
126
@ssalbdivad
David Blass
3 months
Just use a single parameter with named keys! As TypeScript developers, we should already know this strategy from how we think about defining function parameters- it works exactly the same for types!✨
Tweet media one
3
9
116
@ssalbdivad
David Blass
2 months
I'm looking for additional consulting hours so I can continue working on @arktypeio full-time! Have you or your team been struggling with: ✅Complex TypeScript types ✅Slow/crashing editor performance ✅Type testing/benchmarking Retweets would also be a huge help💖 Details⬇️
Tweet media one
2
26
85
@ssalbdivad
David Blass
1 year
A couple quick updates from the @arktypeio perf branch I'm working on: 😬186 commits ahead 🎉No more type errors in src ⏱️Now 30x faster than Zod according to typescript-runtime-type-benchmarks Not bad, but we're targeting 100x+🔥
3
9
59
@ssalbdivad
David Blass
1 month
@tantaman To be fair this is not the kind of thing you have to do to "appease" the type checker, but rather to get precise type safety and completions for APIs most type systems would not support at all.
3
0
46
@ssalbdivad
David Blass
1 month
`skipLibCheck` being off by default in TypeScript is utterly confounding: 🤷 You probably don't own the code being checked 🚨 Errors may be unresolvable due to tsconfig differences 🐌 Very expensive for type check performance Do any other languages have something like this?
4
3
44
@ssalbdivad
David Blass
7 months
Heartfelt shout-out to @thefubhy 💓 He was offered $1000 as a reward for one of his open source contributions, and instead donated it to support @arktypeio . I have been working on the project full-time for 2 years and the beta release for over 6 months now🧵
Tweet media one
4
2
36
@ssalbdivad
David Blass
10 months
@trashh_dev Alias aside, Biron Tchaikovsky is an absolute GIGACHAD name. Would happily trade for it.
2
0
35
@ssalbdivad
David Blass
2 months
Props to @danvdk for his awesome work on his work on this PR. It's a huge win for type safety and composability. Also to @typescript - it's great to see a mature, widely adopted language that is still willing to add ambitious features💪
1
3
35
@ssalbdivad
David Blass
5 months
@TkDodo 🛝 You can customize the suffix error however you want. Of course would still be better if @AndaristRake builds it into TS, but not so bad in the meantime😊
Tweet media one
1
1
32
@ssalbdivad
David Blass
10 months
@t3dotgg Meanwhile TS errors capping out under 100MB😎
Tweet media one
1
2
33
@ssalbdivad
David Blass
1 year
@typescript This looks awesome, thanks so much for taking the time to package this up and make it available to the community🥰 @arktypeio is already 100x+ faster than Zod on the perf branch- we'll see if we can push it even further with the help of this extension🔥
1
2
33
@ssalbdivad
David Blass
5 months
Why is @vitest_dev so much slower running @arktypeio 's tests compared to mocha? At first I thought the answer was threading which is enabled by default for environment isolation, but even in single threaded mode it takes almost twice as long 🤔
9
1
28
@ssalbdivad
David Blass
4 months
1
0
28
@ssalbdivad
David Blass
1 year
🚀 @arktypeio now has over 1k stars on GitHub! At times over the last year and a half, I have felt isolated, depressed and overwhelmed by my work. It still feels daunting, but connecting with you all has given me the energy I need. Thank you.
5
2
27
@ssalbdivad
David Blass
6 months
Could not be more hyped for this🔥 I'll be giving a talk on the theory behind discriminated unions and how you can apply in your code via @arktypeio , @EffectTS_ and beyond🚀
@EffectTS_
Effect | TypeScript at Scale
6 months
We're excited to announce @ssalbdivad as a speaker at Effect Days! David is an open-source TypeScript developer working on @arktypeio - a native type syntax optimized from editor to runtime. Early-bird tickets still available! Get yours now 🎟️
Tweet media one
1
8
22
1
6
28
@ssalbdivad
David Blass
1 year
@jarredsumner My favorite thing about V8's JSON.stringify is the error message you get when it encounters a bigint🤣
Tweet media one
3
0
24
@ssalbdivad
David Blass
1 year
@fforw @mattpocockuk FWIW this makes no sense to me
1
0
25
@ssalbdivad
David Blass
1 month
@tantaman Being good at type-level programming isn't about writing the most convoluted type that no one can understand. It's the opposite. Like all code, complex types should be carefully named and structured. These Prisma types are haphazardly cobbled together. Many achieve nothing.
Tweet media one
3
1
24
@ssalbdivad
David Blass
3 months
And if you're worried about performance, don't be. We've tested it extensively in @arktypeio and the difference from TypeScript's perspective is negligible. I promise everyone working on your codebase will thank you if you do this🙏
2
0
23
@ssalbdivad
David Blass
4 months
I've written hundreds of utility types for @arktypeio , but somehow the idea for this very simple one eluded me until today! If you've ever wanted more flexibility accessing keys on a union in TypeScript, this could be a big help! 🛝Link in comments
Tweet media one
4
1
22
@ssalbdivad
David Blass
5 months
@mattpocockuk If you want to disallow non-integers, there's an easy way to do it as well since `bigint` just stringifies as an integer string! TypeScript makes static parsing so satisfying🤓
Tweet media one
2
1
22
@ssalbdivad
David Blass
1 month
@sorenbs @prisma Sure! Here are the first couple things I notice: - Record overuse + unnecessary intersections - GetFindResult is doing too much, making it hard to read and less cache-friendly - SelectField could be a general key access utility type and doesn't need multiple conditionals
2
0
22
@ssalbdivad
David Blass
4 months
TypeScript just added a declaration for the new Object.groupBy!🎊 But can we do even better if we have a discriminator property?🤔 Here's a version of groupBy that takes a discriminator key instead of a function and correlates each key with an array of its corresponding type!
Tweet media one
3
2
20
@ssalbdivad
David Blass
5 months
If you're not sure whether the DX you want is possible, I can save you a lot of time by giving you a definitive answer and reusable patterns. I've worked with: - @statelyai on their 5.0 API 🔥 - @EffectTS_ on cross-version type testing🔒 - @wevm_dev on type optimizations📈
1
0
20
@ssalbdivad
David Blass
1 year
@trashh_dev Template literals are awesome! Just have to be careful if you're writing a static parser to avoid combining them with unions like this lest you end up with type errors like this one from the early days of @arktypeio 😬
Tweet media one
1
0
19
@ssalbdivad
David Blass
10 months
@trashh_dev .trashjs when?
2
0
18
@ssalbdivad
David Blass
9 months
@wolfganggartner Your music is my favorite to listen to while coding. Trying to make a final push for a release- need those bangers🙏
0
0
1
@ssalbdivad
David Blass
2 months
@AndaristRake @jamesqquick I want to know what the lengthy answer would be
1
0
17
@ssalbdivad
David Blass
1 month
Hard disagree with this. Allowing undefined or null to be assigned to string is no less broken than allowing string to be assigned to number. I'm not a stickler- use looser types or cast if you need. `strict: false` offers nothing but a false sense of security 👎
@JacobMGEvans
Jacob MG Evans
1 month
If you're just getting into TypeScript and/or want to convert a legacy JS codebase to TS please use "strict: false" as long as you need 😁
5
0
11
3
0
17
@ssalbdivad
David Blass
3 months
This isn't a valid type. You likely have skipLibCheck enabled (good), which is preventing TS from displaying that your property declaration conflicts with your index signature (bad). If you're not a compiler, please don't write .d.ts files 🙏
Tweet media one
2
1
17
@ssalbdivad
David Blass
1 year
If you haven't seen it already, check out @mattpocockuk 's new video on @arktypeio 🔥 It's no substitute for thorough documentation, but while we're working on that I'm happy to answer any questions you have here😊
2
4
16
@ssalbdivad
David Blass
6 months
👀 @mattpocockuk no judgment is this you? His TypeScript wizardry truly knows no bounds🧙‍♂️
3
1
16
@ssalbdivad
David Blass
11 days
@matteocollina It is a pain to deal with stuff like this, but at least with regard to pnpm I can say their module resolution was much easier to reason about and helped expose hard to debug dependency issues early (duplicate dependencies, relying on transitive deps directly etc.).
2
0
16
@ssalbdivad
David Blass
9 months
TypeScript is... ✅Great at typing boundaries like functions ❌Bad at correlating types of intermediate or transformed values People worry way too much about getting TS to naturally infer their types correctly within a few lines when it's trivial to see what's going on anyways.
2
1
15
@ssalbdivad
David Blass
2 months
Just learned about "source.addMissingImports" in VS Code. Actually a godsend for refactoring TypeScript. Previously I'd just type each name by hand and let it import them that way🫠
1
2
15
@ssalbdivad
David Blass
1 month
@sorenbs @prisma Amazing! Always looking for ways to support my OSS work. I can't believe trolling the company that got me into TS actually worked, but I'll take it😅
0
0
16
@ssalbdivad
David Blass
8 months
@samcook_ @mattpocockuk @gugaguichard No TS can handle this kind of thing very efficiently! @arktypeio has a lot of benchmarks for complex parsing scenarios. This example involves parsing and resolving thousands of characters of cyclic type references and there's no delay whatsoever.
0
1
15
@ssalbdivad
David Blass
10 months
@ThePrimeagen How do you think it compares to other classic vices like alcohol, gambling etc.?
3
0
15
@ssalbdivad
David Blass
1 year
Think static parsing like @arktypeio would be more expensive for TypeScript's language server than chained functions like @zodtypes ? Think again. GitHub: Test data from:
Tweet media one
1
1
15
@ssalbdivad
David Blass
4 months
This was a great video. Honestly until I saw this it hadn't really crystallized that I don't need to worry about to trying to curate issues for new developers that take me ten times longer to specify than they would to implement🤯
@t3dotgg
Theo - t3.gg
4 months
I just posted a new video about why you shouldn't contribute to open source. Go watch it and tell me why I'm wrong
Tweet media one
39
24
302
0
1
14
@ssalbdivad
David Blass
7 months
Congrats to @AndaristRake on his 200th TS commit🎉 He's done so much to improve the language and has 88 PRs still open🤯 @typescript gotta jump on that- I know some of them are ready to merge and would make a huge difference!
Tweet media one
0
1
14
@ssalbdivad
David Blass
2 months
@jamesqquick @nextjs Have you tried @arktypeio ? Basically TypeScript syntax you can use at runtime for validation like this. Once you try it it's hard to go back to writing `z.` every line😅
5
3
14
@ssalbdivad
David Blass
4 months
@_philpl Looks great! I'd check out @arktype /attest if you haven't already for type assertions/benchmarking. Makes it much easier for a library like this to iterate on your types without regressions.
3
0
13
@ssalbdivad
David Blass
7 months
Finally starting to feel like @arktypeio 's beta release is in sight. The work left isn't trivial, but with the type system design done, now I just need to get all the tests passing again which feels much more approachable🙏
0
0
13
@ssalbdivad
David Blass
5 months
@mattpocockuk Building stuff like this is hard! New tools like attest for type benchmarking help, but if you're not ready to put *a lot* of iteration cycles in, it's best to avoid or delegate types like this. In this case, I had already mentioned to the author they could use @arktypeio !
1
0
12
@ssalbdivad
David Blass
5 months
If you're not sure if your problem would be a good fit, that's okay! Message me and we can figure out the details and whether it would be a good fit: - Twitter: (circular reference) - Email: david @arktype .io - Discord: @ssalbdivad - GitHub: Cheers❄️🕎🎄
0
0
12
@ssalbdivad
David Blass
6 months
@FlavioCorpa With @arktypeio 's native type syntax, even Haskell may have met its *match*😉
Tweet media one
2
1
12
@ssalbdivad
David Blass
6 months
@LCSOfficial @Contractz I haven't felt like I had an LCS team I could really go all in on since Danny left EG. So glad to have that back and more- I'll definitely be watching😍
0
0
11
@ssalbdivad
David Blass
7 months
@zack_overflow This looks really cool but it feels disingenuous to say it's "entirely in type-level TypeScript." Correct me if I'm wrong but it seems to rely on a parser that uses the names of various "types" to perform the associated operations. Still very cool, but I wish you were clearer.
Tweet media one
1
0
10
@ssalbdivad
David Blass
1 year
@mattpocockuk This is a great strategy! We actually built a custom test framework for @arktypeio called attest that adds some additional utilities for checking type errors and measuring instantiation count. @drummer1025 is working on publishing it as a standalone package now🥰
Tweet media one
2
1
11
@ssalbdivad
David Blass
2 months
@mattpocockuk There were some problematic cases raised by @SeaRyanC , but those can be resolved coherently as a natural extension of the language as elaborated in my comment here: This would solve so many pain points in TS related to key iteration🙏
1
1
11
@ssalbdivad
David Blass
1 month
@sorenbs @prisma Yes I've done a ton of work in this area! As part of building @arktypeio , I built a testing+benchmarking framework for types. I've spent thousands of hours on type-level optimization and could definitely provide guidance!
1
0
11
@ssalbdivad
David Blass
1 year
Can your validator handle cyclic inference and validation? The only limits of @arktypeio are the limits of TypeScript💪 Demo: GitHub:
Tweet media one
1
2
11
@ssalbdivad
David Blass
8 months
@maccaw I think the work itself is impressive, but this is an even less meaningful metric than the classic "all green" commit graph. If anything, contributing 1M+ LOC is a potential red flag. If I didn't already trust the author, I'd probably think they forgot to ignore node_modules🤣
0
0
11
@ssalbdivad
David Blass
1 year
Shout-out to @AndaristRake for his unreal generosity in resolving an @arktypeio inference issue that cropped up during 5.1 dev. Helped me understand a lot of the compiler's behavior and submitted a perfect PR overnight without being asked😍
1
1
11
@ssalbdivad
David Blass
1 month
@kettanaito These two aren't equivalent regardless of your TSConfig setting because `foo` is required in { foo: string | undefined}. However, whether { foo?: string } and { foo?: string | undefined } are equivalent depends on whether exactOptionalPropertyTypes is set to true.
Tweet media one
Tweet media two
1
0
10
@ssalbdivad
David Blass
5 months
If TypeScript is important to what your company does, I can help you ship best-in-class developer experience that will leave devs wishing it was you if they ever have to use a competitor😉 CC @vercel @AWSAmplify @calcom @SST_dev @astrodotbuild @bunjavascript @nuxtlabs @trpcio
1
0
10
@ssalbdivad
David Blass
6 months
@mattpocockuk @SeaRyanC My function implementations never use their parameters. I just return a value based on vibes.
1
0
10
@ssalbdivad
David Blass
4 months
@benyahya04 @dhoklalol @Caedrel The only conceivable reason @dhoklalol would be jealous of EU after that G2 series is a humiliation kink.
1
0
10
@ssalbdivad
David Blass
4 months
@t3dotgg @arktypeio @ThePrimeagen My reason for using them for the runtime parser is since you already have to understand the logic as written in ternaries because that's the only way to change the types. So I can either mirror that, or force you to map between two different patterns as you make changes.
2
0
8
@ssalbdivad
David Blass
1 year
So cool to see another validator out there pushing the limits of Python- had no idea this was possible 🤯 I've been working on a TS project called ArkType. Generics are still TODO, but we've got a couple tricks up our sleeve I wonder if Python can match!
@samuel_colvin
Samuel Colvin
1 year
@pydantic Name another validation library (in any language), that code validate this? Recursive generics, including changes of multiple recursive generics 🤯
Tweet media one
8
5
60
1
3
10
@ssalbdivad
David Blass
4 months
I was reading the TC39 type annotations proposal and noticed reflection was out of scope. I understand the incremental approach, but the raw strings would be so powerful for runtime validation. Is that already considered off the table? @drosenwasser @robpalmer2 @romulocintra
4
0
8
@ssalbdivad
David Blass
1 month
I'll be speaking with @JoshuaKGoldberg and @nnennahacks at the first @BosTypeScript meetup in Cambridge, MA 🔥 I don't know nearly enough local TypeScript devs so if you're in the area, reserve a free spot using the link in the comments.
Tweet media one
2
2
10
@ssalbdivad
David Blass
2 months
Not sure whether the DX you want is possible? I can give you a definitive answer and reusable patterns in a fraction of the time it would take to find out yourself. I've worked with: @statelyai , @wevm_dev , @latticexyz , @remilabs , @speakeasydev 🔥
1
1
9
@ssalbdivad
David Blass
2 months
Meanwhile, the limits of type-level code written by mere mortals for @arktypeio
Tweet media one
0
0
8
@ssalbdivad
David Blass
1 year
@jarredsumner Seems like @oven_sh has a massive opportunity with the recent JSDoc vs. TypeScript controversy. If devs can run their .ts natively and library authors can easily build ESM+CJS from the same env, it would obviate the entire discussion.
1
0
8
@ssalbdivad
David Blass
7 months
@mattpocockuk ts-sql is awesome and I love seeing other work on parsing in the type system 😍 I would however humbly nominate @arktypeio 's recursive generic inference for your consideration
Tweet media one
1
1
9
@ssalbdivad
David Blass
5 months
Disagree with this. If you need to iterate over arrays/records and can't use for...of it's a massive pain. It could be worth it if @typescript narrowed based on for(let i = 0....) that i must be in the array. I know some of the TS team also prefer to keep it disabled as is.
@jullerino
Julius
6 months
`"noUncheckedIndexedAccess": true` is a must
5
7
149
3
0
9
@ssalbdivad
David Blass
8 months
@t3dotgg As far as I can tell, the primary outcome of all of this has been everyone coming out of the woodwork to express how much value TypeScript adds. Maybe he's actually working with the TS team and this is all a brilliant masquerade?🤔
2
0
8
@ssalbdivad
David Blass
3 months
@erikras Amusingly, there's also a "+?", which is totally equivalent to just "?"😅
0
0
9
@ssalbdivad
David Blass
1 year
@mattpocockuk @arktypeio @drummer1025 It makes it so easy to iterate toward performant types! Includes builtin snapshotting and runtime metrics as well... probably went a little overboard with some of that🙃
Tweet media one
1
0
9
@ssalbdivad
David Blass
7 months
This looks really cool but it feels disingenuous to say it's "entirely in type-level TypeScript." It seems to rely on a parser that uses the names of various "types" to perform the associated operations. If you want to see some *real* type-level TypeScript, try @arktypeio 😉
Tweet media one
@zack_overflow
zack (in SF)
7 months
I wrote a 2D game, entirely in type-level Typescript. Yes, you read that right. This is flappy bird, written only in Typescript types. How did I do it? It involves a lot of type magic, and a new type-level Typescript runtime I made in Rust + Zig. Let me walk you through it:
80
442
3K
3
1
9
@ssalbdivad
David Blass
6 months
@mattpocockuk Great topic 🔥 I see the misconception that predicates are safe all the time. Predicates are essentially `as` with extra ceremony. They're great for keeping code maintainable when dealing with uninferrable types though- especially when making the same cast multiple times!
4
0
9
@ssalbdivad
David Blass
7 months
@bloberenober Totally agree. People point to holes in TypeScript, but the reality of what makes TS great isn't that it is perfect or always easy to use. It's that it enables library authors to create amazing DX that just wouldn't be possible in a stricter language.
2
0
9
@ssalbdivad
David Blass
11 months
@aarondjents @useafterfree It's imperfect but the type system is incredibly powerful (partially due to its flexibility) and lets library authors create things that would be impossible in other languages. I think many superficial improvements would be marginal or come with a significant cost.
1
0
8
@ssalbdivad
David Blass
2 months
@alexdotjs @Microsoft @AndaristRake @typescript Never have I agreed more wholeheartedly with a tweet
0
0
8
@ssalbdivad
David Blass
7 months
@thdxr @bunjavascript I agree with the premise, but intuitively I'd guess the way bun handles complaints has more to do with the character of the team than the funding.
1
0
8
@ssalbdivad
David Blass
7 months
Huge shout-out to @samgoodwin89 for an incredibly generous $100/month sponsorship to support @arktypeio 🥰 From the few conversations I've had with Sam I can tell he's: - Extremely kind and thoughtful - An extremely talented TypeScript developer Best combo possible😄
0
1
8
@ssalbdivad
David Blass
8 months
My wife recently gave me some disturbing information regarding @bunjavascript and the company behind it, so-called "Oven": Despite the logo, steamed buns are not actually cooked in an oven 🥟☠️ Sorry @colinhacks - the world had to know. (actually though huge congrats)
2
0
8
@ssalbdivad
David Blass
3 months
@t3dotgg Actual function in @arktypeio attest👍
Tweet media one
0
0
8
@ssalbdivad
David Blass
10 months
ErrorLens is an extension for beautiful, customizable inline error messages. I just contributed an "errorLens.replace" option for transforming errors for inline display. Pro Tip: Set it to [{ "matcher": ".*\n([^\n]*)$", "message": "$1" }] to get the only the last line🧹👍
Tweet media one
Tweet media two
1
3
8
@ssalbdivad
David Blass
9 months
How cool is this 😍
@MiTypeScript
Michigan TypeScript
9 months
the @arktypeio logo but it's actually an ark
Tweet media one
Tweet media two
0
0
3
2
0
8
@ssalbdivad
David Blass
1 year
Wanted a break from the runtime optimizations I've been working on for the type system, so decided to take a stab at adding type-safe generics to @arktypeio . The parser is so easy to extend that in less than two hours, I had a working implementation💪
@arktypeio
ArkType
1 year
What if instead of hitting instantiation limits on cyclic types, your validator could pass them to optimized, type-safe generics? Everything you've been told about the limitations of TypeScript is a lie- you just have to be willing to think a bit of outside the box0️⃣1️⃣📦
Tweet media one
4
11
85
0
0
8
@ssalbdivad
David Blass
1 month
One of these things is not like the others🤡
Tweet media one
@swyx
swyx in 🇸🇬
3 years
it's taken me fully ~10 years to appreciate the truth of @BrendanEich 's "Always Bet On JavaScript" line. It's so powerful.
Tweet media one
26
135
1K
2
0
7
@ssalbdivad
David Blass
4 months
@mattpocockuk I was just working on a very similar problem with @solinvictvs yesterday! I'm really excited to use a similar pattern in @arktypeio to introduce configurable type-safe date literals to allow statements like `type("1/1/2000<Date<today")` 🧹
Tweet media one
1
0
8
@ssalbdivad
David Blass
11 months
@github Getting to build a TypeScript parser using its own type system *and* have it be something that's actually useful in the real world? Yes please 😍
0
2
8
@ssalbdivad
David Blass
2 months
@jarredsumner If you're implementing inline snapshots, I have one recommendation: Inline serialized object literals by default. Every assertion library I've seen other than attest stringifies everything which is terrible for read/maintain-ability.
Tweet media one
1
1
6
@ssalbdivad
David Blass
9 months
@mattpocockuk @AndaristRake @kentcdodds The fact that strictNullChecks is still off by default in TS is such an abomination at this point. I was getting so many questions from people with no TSConfig that I just built it into @arktypeio 's validation 🤣
Tweet media one
1
0
7
@ssalbdivad
David Blass
2 months
@mattgperry To me, a syntax to restrict extraneous keys is the last basic feature for a structural type system @typescript has yet to implement. There are so many pain points iterating over keys that could be solved with this 🙏
0
0
7
@ssalbdivad
David Blass
6 months
For those who have used both, is this more true of Rust or @typescript ? To me the TS type system seems like the ultimate tool for library authors wanting to create bespoke DX for their API/DSL, e.g. @arktypeio . Requires jumping through a few extra hoops internally, though😅
@shuttle_dev
Shuttle
6 months
Tweet media one
2
20
194
4
1
7
@ssalbdivad
David Blass
7 months
@JoshuaKGoldberg @mattpocockuk Oh hell yes best version of @mattpocockuk for sure. Looks like he just sniffed an any
2
0
7
@ssalbdivad
David Blass
4 months
@dillon_mulroy Not that it's massively simpler, but this is how I'd implement it that would at least avoid the intersectUnion shenanigans (which I'm also guilty of leveraging occasionally). I think the errors are clearer as well. Playground:
Tweet media one
2
0
7