astexplorer
proposal-type-annotations
Our great sponsors
astexplorer | proposal-type-annotations | |
---|---|---|
43 | 101 | |
5,942 | 4,093 | |
- | 2.4% | |
6.0 | 4.7 | |
3 days ago | about 1 month ago | |
JavaScript | JavaScript | |
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
astexplorer
-
Understanding Code Structure: A Beginner's Guide to Tree-sitter
You can play with your code here, and visualise ASTs for the same.
-
What is an Abstract Syntax Tree in Programming?
Website
-
How to create your own Eslint rule with tests, boosting the DX, and code-review
To understand this syntax, I recommend exploring AST Explorer. You will have a better view of how the AST of JavaScript works and how to correlate it with the Eslint syntaxy:
-
Programming from Top to Bottom - Parsing
You can never mistake type_declaration with an identifier, otherwise the program will not work. Aside from that constraint, you are free to name them whatever you like, there is no one standard, and each parser has it own naming conventions, unless you are planning to use something like LLVM. If you are interested, you can see examples of naming in different language parsers in the AST Explorer.
-
ESLint: under the hood
The rule that I want to write will be called not-allows-underscore: the idea is to abolish the use of underscores when declaring variables or functions. It's a real dummy rule, but it should be enough to see in action the concepts that we have discussed earlier. The first thing that I would do is to go to AST Explorer, write down a code that declares variables and functions (both standard and arrows one) and take a look at what type of node is the one that encodes the identifier. Doing that, I found out that the node type of my interest is Identifier, what a surprise! 🤣. In particular, the structure of the node holds the string used as identifier in the name property.
-
😱 ESlint over Conventions - You have Not unlocked the power of ESlint 😱
All the information about the API, AST node names, AST Explorer, etc. you can read in the official documentation. I’m just going to show examples of how to automate the check-up of our created conventions.
- AST Exploret
-
200 Web-Based, Must-Try Web Design and Development Tools
AST Viewer
-
Building a JSON Parser from scratch with JS 🤯
If you want to see how the AST of popular languages looks, I recommend the AST Explorer. It supports various languages, and you can view the complete AST and navigate through the nodes. If you want to go further, you can try to copy some logic from an existing parser and implement it in your own, such as calculating an expression according to precedence order, for example: 1 + 2 * 3 (which is 7, not 9).
-
Creating my own typescript compiler
https://astexplorer.net/ is a good resource/playground for understanding ASTs and transpilers.
proposal-type-annotations
-
Bun 1.1
That proposal is not fully compatible with Typescript: https://github.com/tc39/proposal-type-annotations?tab=readme...
-
Go 1.22 Release Notes
They held a meeting a few months ago so it's alive but probably still years away.
https://github.com/tc39/proposal-type-annotations/issues/184
-
[AskJS] Kicking a dead horse - TS vs JS
I particularly like this thread in the TC39 types proposal. TypeScript IS a development trojan horse and locks you into the Microsoft Way of being a JS developer.
- Strong static typing, a hill I'm willing to die on...
-
HTML First – Six principles for building simple, maintainable, web software
Edit: There is a proposal to extend JavaScript with type annotations, which would allow ("a reasonably large subset") of TypeScript to run directly in the browser. Yay!
https://github.com/tc39/proposal-type-annotations
-
Building React Components Using Unions in TypeScript
More importantly, TypeScript typically commits to build things into itself when the proposal in JavaScript reaches Stage 3. The pattern matching proposal in JavaScript is Stage 1, but depends on many other proposals as well that may or may not need to be at Stage 3 as well for it to work. This particular proposal is interested on pattern matching on JavaScript Objects and other primitives, just like Python does with it’s native primitives. These are also dynamic types which helps in some areas, but makes it harder than others. Additionally, the JavaScript type annotations proposal needs to possibly account for this. So it’s going to be awhile. Like many years.
-
Show HN: Conway's Game of Life in TypeScript's type system
this is exactly what I want from the _Types as Comments_ proposal[0] as I think it's the only way that types can feasibly become part of the language. It's hard to imagine how all of the concepts TS introduces via special syntax can be covered otherwise.
[0] https://tc39.es/proposal-type-annotations
-
Why Htmx Does Not Have a Build Step
Crossing my fingers that the proposal for allowing (browser-ignored) type annotations in javascript progresses: https://tc39.es/proposal-type-annotations/
Between that, HTTP2/3 and ES modules many of the downsides for building apps with no compile step are almost completely mitigated.
-
TypeScript Without Transpilation
JSDoc can get you pretty far, but it can be clumsy sometimes. There’s a [TC39 proposal](https://github.com/tc39/proposal-type-annotations) to allow types to live in JS code and be treated as comments (similar with Python types today)
- Do you think typescript will ever have native support on brosers? Or we will have only the JS type annotations?
What are some alternatives?
deno_swc - The SWC compiler for Deno.
Scala.js - Scala.js, the Scala to JavaScript compiler
gogocode - GoGoCode is a transformer for JavaScript/Typescript/HTML based on AST but providing a more intuitive API.
rescript-compiler - The compiler for ReScript.
vscode-language-tree - VSCode tree format support
Carp - A statically typed lisp, without a GC, for real-time applications.
ChakraCore - ChakraCore is an open source Javascript engine with a C API.
d2-playground - An online runner to play, learn, and create with D2, the modern diagram scripting language that turns text to diagrams.
Acorn - A small, fast, JavaScript-based JavaScript parser
proposal-record-tuple - ECMAScript proposal for the Record and Tuple value types. | Stage 2: it will change!
tree.d - Tree - simple fast compact user-readable binary-safe extensible structural format
deno - A modern runtime for JavaScript and TypeScript.