The main problem with JavaScript and TypeScript is that there is such a little entrybarrier to it, that way too many people use it without understanding it. The amount of times that we had major issues in production because someone doesn't understand TypeScript is not countable anymore and our project went live only 4 months ago.
For example, when you use nest.js and want to use a boolean value as a query parameter.
As an example:
TypeScript
@Get('valueOfMyBoolean')
@ApiQuery(
{
name: 'myBoolean',
type: boolean,
}
)
myBooleanFunction(
@Query('myBoolean') myBoolean: boolean
){
if(myBoolean){
return 'myBoolean is true';
}
return 'myBoolean is false';
}
You see this code. You don't see anything wrong with it. The architect looks at it in code review and doesn't see anything wrong with it. But then you do a GET https://something.com/valueOfMyBoolean?myBoolean=false and you get "myBoolean is true" and if you do typeOf(myBoolean) you will see that, despite you declaring it twice, myBoolean is not a boolean but a string. But when running the unit-tests, myBoolean is a boolean.
I don't get the hate for the Domino. It is an extremely useful tool to save time, but it is a purely luxury thing and there is nothing that you can't do without it. After all, in the end a Domino is just a fancy dowel and you can build anything that is shown in those youtube videos with a cheap dowel-jig. I built complete tables with this jig: https://www.youtube.com/watch?v=osC9T3WVnlM which cost me 20€ in a set with dowels, drillbits and woodglue. Yes, it took me 2 hours to do the dowelling which would have been 15 minutes with the Domino, but I am only building a table once every 10 years and not weekly like those Youtubers do.