Might as well not use TypeScript
Just as irritating as seeing people use linters only to have a lot of files with @ts-ignore all over the place... Like why even bother?
oh you've got a private variable that I want to use? No worries, (foo as any)['secret'].
using any
is actually much worse than using TS, because you're basically telling the compiler "don't help me here".. at least with JS the IDE is gonna help you.. :/
That's the joke
I don't follow, stamping every function with : any
lets you merge the branch and deploy it... trying to properly type everything extends the initial migration time likely to a level where management just says no.
Use a combination of allowJs
and ts-ignore
, do progressive enhancement, and convert your codebase file by file. Adding any
everywhere literally turns off type checking altogether codebase wide, including type inference. It also means a huge PR that's both just noise that needs to be fixed later, and messes with your git history (good luck getting anything useful out of blame
or bisect
now).
Just getting a green build doesn't mean things are okay. You're worse off than before doing that.
I disagree that you're worse off (the core of my comment was that even a shitty migration encourages better practices)... but I wasn't super familiar with TS hinting - using ts-ignore would be preferable.
Personally, I mostly work in PHP and we use a similar system. Strict typing is default off so we've slowly propagated declare(strict_types=1);
to enable compile and runtime checking on a per file basis.
tbh I don't remember why I'm using TypeScript
Cause otherwise it's plain JS :/
It's a good way to get started, and then incrementally type as much as you can, preferably everything.
Later on, or if you start a new project with TypeScript, it's a good idea to turn on noImplicitAny
and only allow explicit any
in very specific framework level code, unit tests or if you interface with an untyped framework.
The hassle really pays off later.
this is terrible advise - you should be using unknown
. using any
you're basically disabling TS and will be under the false assumption that your code is ok while it's most likely missing a lot of runtime checks
But if your code ever integrates with javascript you still need any everywhere so it's pretty pointless
Not true, in the absolute worst case, unknown
is what you should be reaching for, but it's pretty rare that you can't create some kind of type to interface with JS if it's not already got types. You can even use jsdoc comments as type hints in the JS too if you own that code.
My not particularly hot hot-take: There's basically no legitimate use case for any
apart from "I don't have time to type all this now, because I'm converting a massive project from JS to TS"
There are some cases where any
must be used instead of unknown
but they usually involve generic constraints and seem more like a bug than intended behavior
Ah you're right there, and I also agree, that feels more like a bug than by design
Not necessarily, depending on your situation you can type the JS code yourself.
If the team making the JS code were using jsdoc then the Typescript compiler can recognize the comments and use it for type checking.
In some instances the compiler can infer types from JS code to do some basic validation.
Even if the external JS code is recognized as any
, your own code that's using it still has types, so it's better than nothing.
an any
But it’s “a colon any” 🧐
I knew my any key would be useful one day.
I wish I did that, at this point my TypeScript template errors are as long as C++'s ._.
Why not use assembly ?
Typing < type hinting
Nah this isn't the way, friend. Instead of adding a bunch of useless anys all over the place, start typing in one part of the application and exclude the rest using a path pattern. Or simply allow .js and only change the extension for files you've typed. Doing this is just wasting time and creating false assurances of type safety.
It's not that hard to define correct, meaningful types. Often vscode already has implicitly determined them for you; just mouseover the variable.
Programmer Humor
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
- Posts must be relevant to programming, programmers, or computer science.
- No NSFW content.
- Jokes must be in good taste. No hate speech, bigotry, etc.