Sign in

Gabriel Vergnaud

@gabrielvergnaud.com
289 followers 139 following 30 posts

TypeScript nerd • Open Source (TS-Pattern, HOTScript) • Teacher • Staff Eng @datadog Unleash TypeScript's full potential 👉 type-level-typescript.com

PostsRepliesMedia
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
And there's more! Lots of tiny and big features. Voice to voice, Computer Use...
100
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
It's to keep you in flow. You enter zen mode when you type so you don't get distracted.
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
It's always available for you. You can give it large tasks and it will distribute the work, push implementers forward, answer their questions, and only surface to you what's relevant.
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
Bise is a new take on agents. Bise is your team lead. It has one single everlasting thread for your whole repo. Don't worry about context management, memory, ... everything is handled for you!
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
Oops, I made yet another agent harness. This one is designed to keep _humans_ in flow 😌 Introducing ✨ bise :* ✨ If you feel the agent fatigue while managing your 10 parallel coding sessions, this is for you. and it's packed with cool features 🧵👇
120
Gabriel Vergnaud @gabrielvergnaud.com · 28/03/2025
A new version of TS-Pattern is out 🚨 You can now customize the fallback behavior of `.exhaustive()` if the runtime value you get is unexpected. upgrade 👉 npm i ts-pattern@5.7.0
382
Gabriel Vergnaud @gabrielvergnaud.com · 23/02/2025
Here is another reason I like Type Catalogs. They can easily be transformed with Mapped Types! Full code snippet in thread 🧵👇
1182
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
You need to understand how unions distribute over conditional types to fully get why `Extract` works. Its definition can be somewhat cryptic:
110
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
yea ultimately unions and catalogs encode the same information so either option works! To extract a member of a discriminated union, I find that using the builtin Extract utility is the simplest, but I've noticed that the way Extract works isn't immediately intuitive to most people
110
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
And lastly, it makes writing generic function types so much easier! No need for pesky `Extract`s or `Exclude`s 🔥
140
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
Secondly, you can generate sub-unions super easily:
130
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
Firstly, having a catalog greatly decreases the number of type imports you need to make:
120
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
Pro tip: Don't write your #TypeScript union types by hand, use a Type Catalog instead! Why are Type Catalogs better? Find out in the thread 🧵 👇
2274
Gabriel Vergnaud @gabrielvergnaud.com · 15/12/2024
A new TS-Pattern release is out! 👉 Prevent passing impossible patterns to `isMatching` when used with 2 parameters. 👉 `P.infer` behaves better when used in an argument position. just run `npm i ts-pattern@v5.6.0` in your project 😊 Release note: github.com/gvergnaud/ts...
0120
Gabriel Vergnaud @gabrielvergnaud.com · 26/11/2024
Type-Level TypeScript is on sale for Black Friday! 🚨 You can get it for 25% off! It's only 74$ to get lifetime access to all course materials. 👉 type-level-typescript.com Enroll to learn how to craft and transform #TypeScript *types* with the same ease you handle JavaScript values every day!
0110
Gabriel Vergnaud @gabrielvergnaud.com · 14/11/2024
Template Literal Types are awesome. If you concat `number` and a union of time units, you have a human readable AND type-safe way to provide time values! 👇
0133