this post was submitted on 16 Aug 2023
639 points (90.3% liked)

Programmer Humor

32558 readers
508 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 

TIL about the greek question mark

Tell me, can you tell the difference between these two characters?

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 19 points 1 year ago* (last edited 1 year ago) (3 children)

That's what's really irks me be about JS--you can do just about whatever but you're not supposed to.

It's an imperative language, but best practices are to use it functionally.

You can omit semicolons, but best practices are to use them.

You can use sloppy equality, but best practices are to always use strict.

[–] [email protected] 17 points 1 year ago

JavaScript reminds me of an older brother who happens to be the most laid back stoner you could meet. "Like yea man, you should probably use semicolons, but I ain't gonna narc"

[–] [email protected] 9 points 1 year ago (1 children)

After switching to typescript with linting and prettier I simply hate writing vanilla JavaScript anymore. Some people complain about the extra project setup needed but I find that time pays for itself immediately.

[–] [email protected] 0 points 1 year ago (1 children)

Extra project setup like pnpm add -D typescript && tsc --init? One thing that is kinda annoying is that you have to manage were will js files go.

[–] [email protected] 2 points 1 year ago (1 children)

And eslint and setting up tsconfig for your project structure.

[–] [email protected] 0 points 1 year ago (1 children)

You don't need eslint with TS.

[–] [email protected] 1 points 1 year ago (1 children)

Why do the typescript extensions to eslint exist then?

[–] [email protected] 1 points 1 year ago (1 children)

I don't know. I never used eslint, therefore it is not needed. Everything works perfectly fine without it.

Why do you need it?

[–] [email protected] 1 points 1 year ago (1 children)

Same reason you use typescript. It helps you catch bugs and follow programming best practices. You also don't need typescript, but with it your code is better. Typescript is technically just a really fancy linter. The actual compilation mainly just removes the type data and does some JavaScript engine compatibility.

[–] [email protected] 1 points 1 year ago (1 children)

So why there are typescript extensions for eslint if both are linters for JS? You should either use eslint with JS or transpile TS to JS, right?

Are there bugs in TS that eslint can catch?

I personally never seen TS project with eslint.

[–] [email protected] 1 points 1 year ago (2 children)

Typescript compiler enforces language requirements, the linter enforces language best practices. Best practices help you avoid bugs.

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago) (1 children)

Ok, I should check it out, then. Maybe I already follow all the best practices, so I wouldn't need it anyway. ;)

[–] [email protected] 2 points 1 year ago

I try and follow best practices always too, but when the linter is catching it for you it's less to think about so you can focus on the important parts of the problem

[–] [email protected] 8 points 1 year ago (1 children)

You need to remember that a lot of those best practices are to cover for the performance issues from misusing loosely typed variables.

The JavaScript engine can compile clean, type-safe code down to be almost as fast as properly compiled code. When you use various features like the loose equals or various object mutations and the like, the engine cannot optimize it, leaving your code much, much slower.

[–] [email protected] 5 points 1 year ago (1 children)

I'll add that to my mountain of reasons for using typescript

[–] [email protected] 4 points 1 year ago

Yup! I love TypeScript, and I love the flexibility of JavaScript. With all of the type templates and generics and other black magic TypeScript has, it's pretty easy to even support the crazy stuff like mixins and contextual parameters (if I'm not speaking too loosely while avoiding proper terms!).

A lot of the crazy stuff won't optimize, but at least it goes to show how it's not really tying JavaScript's hands even when requiring TS everywhere.