¿Qué es "TC39: Type Annotations" también conocido como la propuesta de Tipos como Comentarios

Rate this content
Bookmark

Un análisis profundo de la propuesta que podría deshacer la bifurcación de TypeScript y traernos de vuelta a todos nosotros como "JavaScripters, pero con algunos tipos de TypeScript." Cubriremos los motivos del autor, cómo podría funcionar, por qué ahora y cómo va.

Orta Therox
Orta Therox
27 min
21 Sep, 2023

Comments

Sign in or register to post your comment.
  • Denis Radin
    Denis Radin
    GitNation Foundation
    Looking forward to ts being a standard! Cool intent!

Video Summary and Transcription

La propuesta de Anotaciones de Tipo TC59, también conocida como Tipos con Comentarios, introduce la capacidad de ejecutar código tipado en JavaScript. Su objetivo es traer TypeScript de vuelta a JavaScript y crear una separación entre el sistema de tipos y el tiempo de ejecución. La popularidad de TypeScript está a la par con JavaScript, lo que genera preocupaciones sobre la influencia de Microsoft. La propuesta avanza abordando la interacción en tiempo de ejecución y la sopa de tokens en las especificaciones de tipo. La investigación, la participación de la comunidad y la cuantificación de los efectos de apoyar este estilo de comentario son objetivos importantes.

Available in English

1. Introducción a la Propuesta de Anotaciones de Tipo TC59

Short description:

Vamos a repasar la propuesta de Anotaciones de Tipo TC59, también conocida como Tipos con Comentarios, que añade la capacidad de ejecutar código tipado en JavaScript. La propuesta se encuentra actualmente en la primera etapa del proceso TC39. Discutiremos su concepto subyacente y cómo afecta a TypeScript.

Muy bien. Hola a todos. Vamos a repasar la propuesta de Anotaciones de Tipo TC59, también conocida como Tipos con Comentarios. Esta es una propuesta que añade la capacidad de ejecutar código tipado en JavaScript. Ahora, mi nombre es Otto the Rocks. Solía trabajar en el equipo de TypeScript durante unos dos años y medio. Durante ese tiempo trabajé en el sitio web y en la documentación y un poco en las características del compilador aquí y allá. Y una de mis cosas favoritas cuando me fui fue que tenía este gran video de YouTube que describe todo el proceso del compilador que es realmente, realmente útil si estás, ya sabes, interesado en entender las herramientas que usas a diario. Así que, para empezar esta charla, queremos tener al menos un vocabulario compartido. Vamos a hablar un poco sobre TC39. Son un grupo de personas cuyo objetivo principal es tratar de averiguar cómo hacer evolucionar JavaScript de manera lenta y segura. Y la forma en que lo hacen es a través de estas propuestas. Estas propuestas, ya sabes, pasan por cinco etapas. Todas son cada vez más específicas con el tiempo. Y estamos hablando de una propuesta de TC39 que ahora está en la primera etapa. Así que, la propuesta en sí es lo que vamos a tratar primero. La repasaremos brevemente. Profundizaremos en por qué ahora tiene sentido. Porque no es la primera. Veremos cómo afecta a TypeScript. Eso es la mayoría. Y vamos a ver hacia dónde se dirige a continuación. Así que, este es el concepto subyacente. Que hay un problema con este código. Que no se ejecutará en un motor de JavaScript. Como la cadena de dos puntos va a fallar. Y eso significa que eso no es un lenguaje legítimo. Así que, queremos estar en una posición en la que eso no suceda.

2. El impacto de la propuesta en TypeScript y JavaScript

Short description:

Esta propuesta sostiene que los motores de JavaScript deben tratar el código como un comentario, permitiendo a los navegadores ignorarlo. No es un comentario tradicional, sino una forma de indicar que el código debe ser ignorado. TypeScript ha demostrado la necesidad de JavaScript tipado, y esta propuesta se basa en lenguajes anteriores como Ruby y Python. El enfoque principal es cómo esta propuesta afecta a TypeScript y lo reintegra en JavaScript.

¿Cómo hacer eso? Esa es la pregunta complicada que mucha gente ha hecho. Y esta propuesta sostiene que la forma de hacerlo es decir que, oye, motores de JavaScript, simplemente ignoráis este código. Lo tratáis como un comentario. Ahora, los comentarios ya están bastante bien definidos en JavaScript. Tenéis una barra, barra. Lo hacemos hasta el final de la línea. Y tenéis una barra, estrella. Lo hacemos hasta el final de una estrella, barra. Aquí estamos usando el término de forma un poco ambigua. No es un comentario en la forma en que normalmente pensamos en ellos. Pero está diciendo tanto a la persona que está tratando de entender esta propuesta, la idea es, simplemente lo ignoras. Y enseñamos a los navegadores cómo ignorar ese tipo de código. Y esa es la idea. Si realmente quieres profundizar en los detalles, puedes ir a los comentarios de TypeScript, voy a cometer ese error varias veces. La página web de la propuesta de comentarios de TypeScript. Y esta es una versión de nivel superior de la propuesta. Así que no requiere que seas un nerd del lenguaje, básicamente. Y si quieres realmente profundizar, deberías ver la charla de Gil Tyre sobre el preludio a su propuesta, porque él es uno de los que la están impulsando. Cómo y por qué consiguió cierto consenso de un montón de gente. Y más o menos por qué tiene sentido a largo plazo en comparación con él usando el soporte JSDoc en JavaScript.

Entonces, ¿por qué ahora? ¿Verdad? Como, ya sabes, ha habido muchos intentos de tratar de añadir un sistema de tipos a JavaScript. Y esta es más o menos la primera vez que uno ha llegado a un nivel de, ya sabes, gente que se preocupa. Creo que TypeScript realmente ha demostrado a la gente que hay una necesidad de JavaScript tipado a una escala razonable. TypeScript ahora está en una posición en la que está bien asumir algunas de las restricciones que serían necesarias para hacer esto funcionar. Y la idea ya ha sido probada en lenguajes anteriores que tienen restricciones similares, como lenguajes de tipo script, como Ruby y Python. El grado en que están totalmente de acuerdo con todas las compensaciones es algo que ahora podemos usar para averiguar qué debería parecer eso en JavaScript en comparación con la implementación de Ruby y Python, también. Así que no somos los primeros, estamos probando algo nuevo. Estamos probando algo que está razonablemente establecido. Ahora, lo que creo que a la mayoría de la gente en el contexto del Congreso de TS le interesa es cómo afecta esto a TypeScript, ¿verdad? Esta es una propuesta que añade algunas restricciones a TypeScript que pueden traer de vuelta a TypeScript a JavaScript. Hay muchas cosas pasando aquí. Y cuando pensé en cómo enmarcar esto, repasé las notas de la discusión original de TC39, y vi que Rob Palmer había

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

A Guide to React Rendering Behavior
React Advanced Conference 2022React Advanced Conference 2022
25 min
A Guide to React Rendering Behavior
Top Content
React is a library for "rendering" UI from components, but many users find themselves confused about how React rendering actually works. What do terms like "rendering", "reconciliation", "Fibers", and "committing" actually mean? When do renders happen? How does Context affect rendering, and how do libraries like Redux cause updates? In this talk, we'll clear up the confusion and provide a solid foundation for understanding when, why, and how React renders. We'll look at: - What "rendering" actually is - How React queues renders and the standard rendering behavior - How keys and component types are used in rendering - Techniques for optimizing render performance - How context usage affects rendering behavior| - How external libraries tie into React rendering
Scaling Up with Remix and Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
Do you have a large product built by many teams? Are you struggling to release often? Did your frontend turn into a massive unmaintainable monolith? If, like me, you’ve answered yes to any of those questions, this talk is for you! I’ll show you exactly how you can build a micro frontend architecture with Remix to solve those challenges.
React Concurrency, Explained
React Summit 2023React Summit 2023
23 min
React Concurrency, Explained
Top Content
React 18! Concurrent features! You might’ve already tried the new APIs like useTransition, or you might’ve just heard of them. But do you know how React 18 achieves the performance wins it brings with itself? In this talk, let’s peek under the hood of React 18’s performance features: - How React 18 lowers the time your page stays frozen (aka TBT) - What exactly happens in the main thread when you run useTransition() - What’s the catch with the improvements (there’s no free cake!), and why Vue.js and Preact straight refused to ship anything similar
Full Stack Components
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
Remix is a web framework that gives you the simple mental model of a Multi-Page App (MPA) but the power and capabilities of a Single-Page App (SPA). One of the big challenges of SPAs is network management resulting in a great deal of indirection and buggy code. This is especially noticeable in application state which Remix completely eliminates, but it's also an issue in individual components that communicate with a single-purpose backend endpoint (like a combobox search for example).
In this talk, Kent will demonstrate how Remix enables you to build complex UI components that are connected to a backend in the simplest and most powerful way you've ever seen. Leaving you time to chill with your family or whatever else you do for fun.
TypeScript and React: Secrets of a Happy Marriage
React Advanced Conference 2022React Advanced Conference 2022
21 min
TypeScript and React: Secrets of a Happy Marriage
Top Content
TypeScript and React are inseparable. What's the secret to their successful union? Quite a lot of surprisingly strange code. Learn why useRef always feels weird, how to wrangle generics in custom hooks, and how union types can transform your components.
Making JavaScript on WebAssembly Fast
JSNation Live 2021JSNation Live 2021
29 min
Making JavaScript on WebAssembly Fast
Top Content
JavaScript in the browser runs many times faster than it did two decades ago. And that happened because the browser vendors spent that time working on intensive performance optimizations in their JavaScript engines.Because of this optimization work, JavaScript is now running in many places besides the browser. But there are still some environments where the JS engines can’t apply those optimizations in the right way to make things fast.We’re working to solve this, beginning a whole new wave of JavaScript optimization work. We’re improving JavaScript performance for entirely different environments, where different rules apply. And this is possible because of WebAssembly. In this talk, I'll explain how this all works and what's coming next.

Workshops on related topic

React Hooks Tips Only the Pros Know
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
React Hooks Tips Only the Pros Know
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
The addition of the hooks API to React was quite a major change. Before hooks most components had to be class based. Now, with hooks, these are often much simpler functional components. Hooks can be really simple to use. Almost deceptively simple. Because there are still plenty of ways you can mess up with hooks. And it often turns out there are many ways where you can improve your components a better understanding of how each React hook can be used.You will learn all about the pros and cons of the various hooks. You will learn when to use useState() versus useReducer(). We will look at using useContext() efficiently. You will see when to use useLayoutEffect() and when useEffect() is better.
React, TypeScript, and TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript, and TDD
Top Content
Featured WorkshopFree
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.
Designing Effective Tests With React Testing Library
React Summit 2023React Summit 2023
151 min
Designing Effective Tests With React Testing Library
Top Content
Featured Workshop
Josh Justice
Josh Justice
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests.
Table of contents- The different kinds of React application tests, and where component tests fit in- A mental model for thinking about the inputs and outputs of the components you test- Options for selecting DOM elements to verify and interact with them- The value of mocks and why they shouldn’t be avoided- The challenges with asynchrony in RTL tests and how to handle them
Prerequisites- Familiarity with building applications with React- Basic experience writing automated tests with Jest or another unit testing framework- You do not need any experience with React Testing Library- Machine setup: Node LTS, Yarn
Best Practices and Advanced TypeScript Tips for React Developers
React Advanced Conference 2022React Advanced Conference 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.
Using CodeMirror to Build a JavaScript Editor with Linting and AutoComplete
React Day Berlin 2022React Day Berlin 2022
86 min
Using CodeMirror to Build a JavaScript Editor with Linting and AutoComplete
Top Content
WorkshopFree
Hussien Khayoon
Kahvi Patel
2 authors
Using a library might seem easy at first glance, but how do you choose the right library? How do you upgrade an existing one? And how do you wade through the documentation to find what you want?
In this workshop, we’ll discuss all these finer points while going through a general example of building a code editor using CodeMirror in React. All while sharing some of the nuances our team learned about using this library and some problems we encountered.
Deep TypeScript Tips & Tricks
Node Congress 2024Node Congress 2024
83 min
Deep TypeScript Tips & Tricks
Top Content
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.