this post was submitted on 08 Sep 2023
57 points (70.2% liked)

Programming

17416 readers
81 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] scorpionix@feddit.de 4 points 1 year ago (3 children)

I haven't dealt with a larger JS/Node Project in a while, but I like this approach to using TS features in JS.

[–] cactusupyourbutt@lemmy.world 9 points 1 year ago (1 children)

so he does all of this because he dislikes transpiling because supposedly it makes debugging etc harder? does he know about sourcemaps?

he also says he doesnt like type information in his code, so he adda them as comments. the type information is still there, how is this an improvement?

[–] scorpionix@feddit.de 2 points 1 year ago (3 children)

The issue with transpiling is that the code that's running in production is not necessarily the one that's been tested. A source map doesn't fix that.

[–] atheken@programming.dev 6 points 1 year ago (1 children)

I loathe this line of reasoning. It's like saying "unless you wrote assembly, compiling your code could change what it does."

Guess what, the CPU reorders/ellides assembly, too! You can't trust anything!

[–] pivot_root@lemmy.world 4 points 1 year ago* (last edited 1 year ago) (1 children)

Haha, what is this, the 90s?

Assembled instructions aren't even the lowest non-hardware stage in instruction execution. There's proprietary microcode sitting a level below your typical x86 ISA.

And even then, what if—God forbid—the hardware has errata. A line has to be drawn somewhere between trusting that what you write is logically correct at all stages below it. If someone is unable to trust that the environment they wrote code for works, they better start learning how to create PCBs and writing for FPGAs.

[–] atheken@programming.dev 3 points 1 year ago* (last edited 1 year ago) (1 children)

🙈🙉🙊

I know, but I didn’t want to scare the children.

I also chose to pretend it’s just little gnomes moving the bytes around. Less magic.

[–] pivot_root@lemmy.world 1 points 1 year ago

What are electrons, but a miserable pile of little magic gnomes? But enough talk... have a upvote!

[–] pivot_root@lemmy.world 2 points 1 year ago

Unless someone is using some language extensions, transpiling from TS to an ECMAScript module using the ESNext target merely drops the type annotations.

If not running the exact same code being developed is an issue, it's an easy fix.

[–] Miaou@jlai.lu 1 points 1 year ago* (last edited 1 year ago) (1 children)

Ugh? Why shouldn't it be the same code?

[–] scorpionix@feddit.de 1 points 1 year ago (1 children)

Because Browsers can't run Typescript, they run JavaScript. That's why the intermediate conversion step isneededd.

[–] Miaou@jlai.lu 1 points 1 year ago* (last edited 1 year ago)

But your tests are running on the compiled code too. Nothing can be tested but handwritten assembly, with such approach

[–] iFarmGolems@lemmy.world 4 points 1 year ago

I do this daily and believe me when I say that I'd trade my kidney for the ability to use TS natively. This looks good on paper but jsdoc notation has lots of flaws and you literally can't do some things with it. Also, it doesn't check if the function actually does the thing you described so it needs manual review every time it's changed.

[–] plistig@feddit.de 4 points 1 year ago

That approach was mentioned in the video.