This is a false equivalency that I see pop up pretty often. Like Use Types or Go Fast? Why are those the only options? Why does using types make you slower? If you're a slow typist then I suppose writing the types can take a little longer. Why is the comparison not Go Fast or Write Tests? A test suite with reasonable coverage is many times the amount of code that adding types takes.<p>Here's a great tool, <a href="https://quicktype.io/typescript" rel="nofollow">https://quicktype.io/typescript</a> . You can paste in JSON objects and it will spit out useful type definitions for your objects. The reality is that types exist in JavaScript and any other untyped language, they're just implicit. You have to read the code to know what they are. Then to help yourself or people who work with you, you will start writing examples either in the docs or in tests, and now you've informally specified your types. Or you don't do either then every time you or anyone else goes to edit a piece of code you have to read, understand, manually find all places you used that code and make sure you didn't break anything.<p>The purpose of a static type system is to find bugs, or issues with your code without even running it. The compiler will let you know if you make a change to the code which breaks the type you set. It can do a lot of the above mentioned work completely automatically.<p>You end up saving a lot of time not repeating work. One time working in python I had a problem that took me an hour to figure out. I had to look through a bunch of project code, then library code, and then I figured out that I just had put in the wrong shape of data. In a typed language it would have take me 30 seconds. The compiler would have complained and told me how I was wrong and then I would have fixed and moved on. At that moment I said "I'm getting too old for this shit", and then have never looked back from working with typed languages.<p>Secondly, TypeScript is not Java/C/C++. TypeScript has type inference and expressive type system. This means that you do not need to manually write the type for every single variable. Most you can omit because TypeScript is clever enough to figure it out.<p>Secondly, Structural typing is exactly how duck typing works in JavaScript and Python. Unlike those older languages you don't need to build huge class based hierarchies to make types that work in many situations. Define a minimal interface that you need for a function. Any object that has those properties will type check and work.<p>Check out Effective TypeScript, or Programming TypeScript. As a seasoned node developer I assure you that if you ever have teammates, types will help them contribute to a code base faster and with more confidence.