'TypeChat' Panel Discussion

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

FAQ

John Riley is a character moderating the discussion but does not specifically state his role in the TypeScript team. He facilitates the conversation among the team members.

Nathan Cheively Sanders has been working on TypeScript for six and a half years.

Before joining the TypeScript team, Nathan worked on another compiler at Microsoft, which was internally known and briefly sold as USQL.

Nathan Cheively Sanders mentioned that he wishes to improve or possibly remove enums from TypeScript, as their implementation isn't very strict and they are complicated without providing much benefit.

Tishan originally did not have much appreciation for JavaScript, but his perspective changed after encountering TypeScript version 0.8, which featured types and productivity enhancements like accurate code completions.

According to the discussion, TypeScript, being a part of Microsoft, adheres to a philosophy of supporting customers for as long as possible, which includes maintaining backward compatibility and support for older codebases.

Gabriella joined the TypeScript team after an internship at Microsoft, where she worked on a front-end project and got introduced to TypeScript.

John Reilly
John Reilly
Titian-Cornel Cernicova-Dragomir
Titian-Cornel Cernicova-Dragomir
Nathan Shively-Sanders
Nathan Shively-Sanders
Gabriela Araujo Britto
Gabriela Araujo Britto
39 min
29 Apr, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
John Riley introduces TypeScript team members, including Nathan and Gabriella. Tishan discusses his transition from C Sharp to TypeScript and highlights regrets and improvements in TypeScript. The team discusses evolving views on enums, union types, and language features in TypeScript. They explore potential changes in TypeScript's evolution and the influence of Microsoft's philosophy. The conversation also covers enhancing user experience through improved TypeScript error messages.

1. Introduction to TypeScript Team Members

Short description:

John Riley initiates introductions to the TypeScript team members. Nathan shares his decade-long journey to TypeScript. Gabriella recounts her path to joining the team after an internship at Microsoft.

Hello, all. I'm John Riley, you know me. Do you, would you like to describe yourself? So, I, let's, let me have a first crack at this, because I think, Nathan, you've been part of the, part of the TypeScript team for the longest time. Gabriella, I think you're a recent joiner, and Titian, you're not part of the touchscreen, you're part of Bloomberg, but you contributed to TypeScript. That's me sort of like mangling your intros. I wonder if you could try and introduce yourselves a little bit more in-depth, and also tell us, tell us your journey to TypeScript. Nathan Cheively Sanders You want me to start? Yeah, go for it, Nathan. So I'm Nathan Cheively Sanders, and I've been working on TypeScript, I think for six and a half years now. Yeah, six and a half years. And before that, I worked on another compiler at Microsoft. And before that, I studied linguistics in grad school. And so all told, between starting on the TypeScript compiler, it had been about a decade since I'd written any JavaScript at all. And I just was looking for a different compiler to work on, and TypeScript seemed really cool and I tried it and it turned out to be a lot of fun. Yeah, so that's me. Amazing, thank you. What was the compiler that you're working on before that? It was an internal thing which I think was briefly sold as USQL. It was like somewhat marketed as a successor to T-SQL, except it wasn't. And then it turned out nobody wanted to buy it so I don't think it was for sale for very long. But it's a SQL dialect, yeah. Nice, thank you Nathan.

Gabriella, could you tell us your story? Yes. Sorry, there's a very annoying fly here. Sorry about that. I have been working on the TypeScript team since last year, in July. So everything TypeScript is very new to me. And I got here because I did an internship at Microsoft, working on a front-end project. And that's how I got to know TypeScript. So I thought it was pretty cool to have types in JavaScript. And I emailed someone from the TypeScript team, and they did a few internships, and here I am now. Nice.

QnA

Journey to TypeScript with Tishan

Short description:

Tishan shares his journey from C Sharp to TypeScript. Discussion on regrets and improvements in TypeScript, focusing on enums and unions.

That's really cool. Tishan, tell us your story. Yeah, I'm originally a C Sharp developer. I actually didn't have much love for JavaScript, quite frankly. And when I first saw TypeScript version 0.8, and I saw the types, and I saw, I can just press dot, and I get accurate code completions and all of that productivity enhancements, I was like, yeah, now I can do JavaScript. That's what I want to do. And I've been a huge fan of it ever since. So rest is history, as they say. Yes, yeah.

First question. So when you think of TypeScripts, and the...it's an amazing thing, obviously. But you must have, as language implementers, people who've worked on languages, regrets and mistakes around it. Things that you might do differently, like knowing what you know now, if you were to go back five years. So I'm curious if there's any of those that you've got in mind that you could share. One thing that I wish we could improve, or maybe get rid of entirely, is enums. They seem like a feature that should be useful, but the way they're implemented in TypeScript just isn't very strict. Except when it is strict, and they're just really complicated without actually providing too much benefit. And if we were to do them today, we'd have a bunch of features like with unions. Enums actually predate unions. We tried to retrofit union semantics on top of them, and it didn't really succeed. That's one thing I would either get rid of or change. I'm not sure which one. I don't know if you all ever used unions.

Evolving Views on TypeScript Features

Short description:

Discussion on evolving views on enums, union types, and language features in TypeScript.

That's one thing I would either get rid of or change. I'm not sure which one. I don't know if you all ever used unions. I remember enums being there pretty much from the beginning and not really using them. I didn't like the fact that they had a MIT aspect to them. And then union types, string-literal unions came out, and I want to say it was 1.7 or 1.8, something like that. And it was like, I don't need it anymore. The compiler does exactly what I need in that space, just using this. Instead, I can now forget that this ever existed. And that's how I've rolled with regards to enums since then. For us in Bloomberg, for example, we actually use a pattern of creating an object and using ASCONST on it and emulating a union rather than using actual enums. I think for us, the deal-breaker is their non-standard. And that's why we've steered away from them. But I think that speaks to a broader theme of most of the things that came into TypeScript before TypeScript adopted this strict philosophy of just JavaScript plus types. I think a lot of those are sort of, at least from my point of view, features that people will try to avoid at present. Anyway, for example, namespaces and other things like that.

Yeah, there's a weird corner of the language I'm embarrassed about. I think it was my first feature on the team was this parameter, where you can have a normal function and you can say this colon. And inside that function, it'll pretend like this has that type. So you can sort of use it to sort of write extension methods kind of thing, not really. Yeah. But, at the time, I didn't realize it. And sort of the last feature we put in, that's in expression space. In other words, it's valid JavaScript, except that TypeScript lets you write something that shouldn't be able to go there. Yeah, but that feature is actually very useful. I don't think you could take it out of TypeScript. No, you can't take it out. Perhaps another syntax for it, but it definitely would have to be there in some form. And I think the reason was I've been writing a lot of C sharp in the years beforehand, and it seemed like a natural place to put it. And everybody on the team was like, yeah, it seems good.

Potential Changes in TypeScript's Evolution

Short description:

Discussion on TypeScript's evolution, potential changes, and the influence of Microsoft's philosophy.

Except I think Ron pointed out that he's on the TC39 committee, pointed out the TC39 committee is not going to like this. But I didn't know at the time. And so I think that's probably the last thing we did that sort of takes over JavaScript expression space. Yeah. It's funny, I know that TypeScript doesn't do semantic versioning, everything can break with each version as new language features come along, and the compiler becomes stricter. That breaking changes thing is actually useful because you want your compiler to get better and better and find more and more errors and make your code more and more correct. But at the same time, I think nothing has been removed from the language since 1.0. Nothing's radically changed since then. And I've always wondered, given that there's already an understanding that breaking changes are a thing, and I think the TypeScript will do, removing parts of the language that were like reliably agreed, okay this is a thing that we don't want to have, like this creates problems. I always wonder if that that could ever happen. I think the answer is no, but I'm like could it? Could it? Maybe? I mean, so I would say as long as TypeScript is part of Microsoft, the Microsoft philosophy is supporting customers as long as possible. Yeah that's so the basically the answer is no. And specifically inside of Microsoft, we have some very old code bases that still in theory somebody from that maintains that code might come to us and say, hey I need your help with this, please make the types compilers stop crashing or run faster or work with this new feature all of a sudden. And we try to give the same guarantees to the people outside Microsoft too. If there were a TypeScript that was sort of outside Microsoft and untethered from the Microsoft philosophy, it's possible but I don't see that day coming because TypeScript is just so integrated in all of Microsoft's properties at this point that it's something that it's not going to go away fast at all. Yeah. Yeah, that's a really interesting question. Like what would a TypeScript successor do that started over today? But it's not one that the TypeScript team can really do anything with. I think it'd be very cool to see what other people would do. Who are you talking about? Gabriela, you've got more recent eyes to TypeScript given that you joined relatively recently. I wonder if there's, as you look at something with new eyes, you often form different perspectives than the people who've been looking at something for 10 years. Are there things that you look at and you're like, that bit there, I think that that thing there could be different or should be different at all? Yes. I think that has happened quite a few times since I started. Once you start working as a language implementer, there is a lot that you start taking for granted. And other people that are just users of TypeScript, they don't know the internal knowledge of the compiler. Sometimes they can't make sense of what's really going on when say there's a weird error message. I know Arthur was talking about this when on the last talk. And it has happened quite a few times that I see an error message. And I go up to the rest of the team, and ask, Hey, what is going on here? This doesn't make sense to me. And then someone from the team comes and explains it in terms of the compiler internals.

Enhancing User Experience with TypeScript Errors

Short description:

Discussion on improving TypeScript error messages for better user understanding.

And so, in light of how the compiler works, it makes sense. But a user wouldn't know what is going on. And we then try to make that better. So that people can understand what's the problem with their code. Even if they don't know how the compiler is computing all the types.

Have you seen a TypeScript error translator experiment? Yes. I took a quick look. What did you think? I think it's very nice. I would love to see some work on making error messages more accessible, and it's a really tough problem, right? Because there are some cases where you can immediately tell. I mean, a compiler could immediately tell what is wrong, but sometimes that is not the case. Sometimes, it all comes down to the intention of the user, and the compiler can't really figure out the intention, right? As easily as a human could.

So, I feel like there is always this tension between the user, what the user means, and making sure the compiler can understand that, and it's not always possible. But I guess we're doing our best. Yes, definitely. I really like the shape of that solution. I think it would be pretty good if interactively VS Code could give you a link underneath an error that you click, and it takes you to some page like that. I really like the way ESLint rules have it. This is okay. This is an error. This is okay, this is an error. It just has lots and lots of code examples for every lint rule.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React's Most Useful Types
React Day Berlin 2023React Day Berlin 2023
21 min
React's Most Useful Types
Top Content
Watch video: React's Most Useful Types
Today's Talk focuses on React's best types and JSX. It covers the types of JSX and React components, including React.fc and React.reactnode. The discussion also explores JSX intrinsic elements and react.component props, highlighting their differences and use cases. The Talk concludes with insights on using React.componentType and passing components, as well as utilizing the react.element ref type for external libraries like React-Select.
TypeScript and React: Secrets of a Happy Marriage
React Advanced 2022React Advanced 2022
21 min
TypeScript and React: Secrets of a Happy Marriage
Top Content
React and TypeScript have a strong relationship, with TypeScript offering benefits like better type checking and contract enforcement. Failing early and failing hard is important in software development to catch errors and debug effectively. TypeScript provides early detection of errors and ensures data accuracy in components and hooks. It offers superior type safety but can become complex as the codebase grows. Using union types in props can resolve errors and address dependencies. Dynamic communication and type contracts can be achieved through generics. Understanding React's built-in types and hooks like useState and useRef is crucial for leveraging their functionality.
Making Magic: Building a TypeScript-First Framework
TypeScript Congress 2023TypeScript Congress 2023
31 min
Making Magic: Building a TypeScript-First Framework
Top Content
Daniel Rowe discusses building a TypeScript-first framework at TypeScript Congress and shares his involvement in various projects. Nuxt is a progressive framework built on Vue.js, aiming to reduce friction and distraction for developers. It leverages TypeScript for inference and aims to be the source of truth for projects. Nuxt provides type safety and extensibility through integration with TypeScript. Migrating to TypeScript offers long-term maintenance benefits and can uncover hidden bugs. Nuxt focuses on improving existing tools and finds inspiration in frameworks like TRPC.
Stop Writing Your Routes
Vue.js London 2023Vue.js London 2023
30 min
Stop Writing Your Routes
Top Content
Designing APIs is a challenge, and it's important to consider the language used and different versions of the API. API ergonomics focus on ease of use and trade-offs. Routing is a misunderstood aspect of API design, and file-based routing can simplify it. Unplugging View Router provides typed routes and eliminates the need to pass routes when creating the router. Data loading and handling can be improved with data loaders and predictable routes. Handling protected routes and index and ID files are also discussed.
Faster TypeScript builds with --isolatedDeclarations
TypeScript Congress 2023TypeScript Congress 2023
24 min
Faster TypeScript builds with --isolatedDeclarations
Top Content
This talk discusses the performance issues in TypeScript builds and introduces a new feature called isolated declarations. By running the compiler in parallel and using isolated modules, significant performance gains can be achieved. Isolated declarations improve build speed, compatibility with other tools, and require developers to write types in code. This feature has the potential to further increase performance and may be available in TypeScript soon.
Full-stack & typesafe React (+Native) apps with tRPC.io
React Advanced 2021React Advanced 2021
6 min
Full-stack & typesafe React (+Native) apps with tRPC.io
Top Content
Alex introduces tRPC, a toolkit for making end-to-end type-safe APIs easily, with auto-completion of API endpoints and inferred data from backend to frontend. tRPC works the same way in React Native and can be adopted incrementally. The example showcases backend communication with a database using queries and validators, with types inferred to the frontend and data retrieval done using Prisma ORM.

Workshops on related topic

React, TypeScript, and TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript, and TDD
Top Content
Featured Workshop
Paul Everitt
Paul Everitt
ReactJS is wildly popular and thus wildly supported. TypeScript is increasingly popular, and thus increasingly supported.

The two together? Not as much. Given that they both change quickly, it's hard to find accurate learning materials.

React+TypeScript, with JetBrains IDEs? That three-part combination is the topic of this series. We'll show a little about a lot. Meaning, the key steps to getting productive, in the IDE, for React projects using TypeScript. Along the way we'll show test-driven development and emphasize tips-and-tricks in the IDE.
Mastering advanced concepts in TypeScript
React Summit US 2023React Summit US 2023
132 min
Mastering advanced concepts in TypeScript
Top Content
Featured WorkshopFree
Jiri Lojda
Jiri Lojda
TypeScript is not just types and interfaces. Join this workshop to master more advanced features of TypeScript that will make your code bullet-proof. We will cover conditional types and infer notation, template strings and how to map over union types and object/array properties. Each topic will be demonstrated on a sample application that was written with basic types or no types at all and we will together improve the code so you get more familiar with each feature and can bring this new knowledge directly into your projects.
You will learn:- - What are conditional types and infer notation- What are template strings- How to map over union types and object/array properties.
Deep TypeScript Tips & Tricks
Node Congress 2024Node Congress 2024
83 min
Deep TypeScript Tips & Tricks
Top Content
Featured Workshop
Josh Goldberg
Josh Goldberg
TypeScript has a powerful type system with all sorts of fancy features for representing wild and wacky JavaScript states. But the syntax to do so isn't always straightforward, and the error messages aren't always precise in telling you what's wrong. Let's dive into how many of TypeScript's more powerful features really work, what kinds of real-world problems they solve, and how to wrestle the type system into submission so you can write truly excellent TypeScript code.
Best Practices and Advanced TypeScript Tips for React Developers
React Advanced 2022React Advanced 2022
148 min
Best Practices and Advanced TypeScript Tips for React Developers
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
Are you a React developer trying to get the most benefits from TypeScript? Then this is the workshop for you.In this interactive workshop, we will start at the basics and examine the pros and cons of different ways you can declare React components using TypeScript. After that we will move to more advanced concepts where we will go beyond the strict setting of TypeScript. You will learn when to use types like any, unknown and never. We will explore the use of type predicates, guards and exhaustive checking. You will learn about the built-in mapped types as well as how to create your own new type map utilities. And we will start programming in the TypeScript type system using conditional types and type inferring.
Practice TypeScript Techniques Building React Server Components App
TypeScript Congress 2023TypeScript Congress 2023
131 min
Practice TypeScript Techniques Building React Server Components App
Workshop
Maurice de Beijer
Maurice de Beijer
In this hands-on workshop, Maurice will personally guide you through a series of exercises designed to empower you with a deep understanding of React Server Components and the power of TypeScript. Discover how to optimize your applications, improve performance, and unlock new possibilities.
 
During the workshop, you will:
- Maximize code maintainability and scalability with advanced TypeScript practices
- Unleash the performance benefits of React Server Components, surpassing traditional approaches
- Turbocharge your TypeScript with the power of Mapped Types
- Make your TypeScript types more secure with Opaque Types
- Explore the power of Template Literal Types when using Mapped Types
 
Maurice will virtually be by your side, offering comprehensive guidance and answering your questions as you navigate each exercise. By the end of the workshop, you'll have mastered React Server Components, armed with a newfound arsenal of TypeScript knowledge to supercharge your React applications.
 
Don't miss this opportunity to elevate your React expertise to new heights. Join our workshop and unlock the potential of React Server Components with TypeScript. Your apps will thank you.
Advanced TypeScript types for fun and reliability
TypeScript Congress 2022TypeScript Congress 2022
116 min
Advanced TypeScript types for fun and reliability
Workshop
Maurice de Beijer
Maurice de Beijer
If you're looking to get the most out of TypeScript, this workshop is for you! In this interactive workshop, we will explore the use of advanced types to improve the safety and predictability of your TypeScript code. You will learn when to use types like unknown or never. We will explore the use of type predicates, guards and exhaustive checking to make your TypeScript code more reliable both at compile and run-time. You will learn about the built-in mapped types as well as how to create your own new type map utilities. And we will start programming in the TypeScript type system using conditional types and type inferring.
Are you familiar with the basics of TypeScript and want to dive deeper? Then please join me with your laptop in this advanced and interactive workshop to learn all these topics and more.
You can find the slides, with links, here: http://theproblemsolver.nl/docs/ts-advanced-workshop.pdf
And the repository we will be using is here: https://github.com/mauricedb/ts-advanced