Already exists, that's called Javascript
Unlike traditional types such as string, number, or even JavaScript's dangerously permissive any, an ambiguous variable can contain any value, several values, or no value at all, depending on execution context, compiler mood, and whether anyone is currently debugging it.
It's different than loosely typed vars, which are not at all exclusive to Javascript
"any value, several, or no value". Any in JS is literally that tho, sans "Never" iirc
Edit: oops, I was wrong. Any MAY be a never. Typescript allows it
JavaScript's dangerously permissive
any
Excuse me? JavaScript doesn't have any. They're thinking of TypeScript's any.
I mean, technically all JavaScript variables are typed any
you are forgetting the [object Object] type
Have you heard of the new [objective Object] it’s an impartial
If you're ever feeling a little mischievous, that's also great placeholder text to hide in language files

They're typed as any only when you use typescript.
"We use TypeScript."
Every single return and argument type is any.
We use typescript and try very hard not to return any... But 95% of out back ends api returns are type bob: Type || undefined
So we have to cater for that almost everywhere and half the time it feels like "strong typing" is a waste of effort.
But I still prefer the relative certainty of typescript
You may need a tagged type. It is done on our code base such that currency of one type can't be operated on currency of another type. The basic is that TAG<number, 'USD'> !== TAG<number, 'EUR'> because even if the underlying type is the same (number), they are of different types on the type system. See also type-fest library that provide a ton more helper type like that
So, an equivalent to C#'s Type? or Python's Optional[Type]? That's still a lot better than nothing. You aren't going to get an array when you asked for a float, for example.
You still might. Typescript is just a fancy linter, it doesn't actually stop anything from happening. If a backend API changes to give you an array, you will get an array, and it will be a disaster
I don't know shit about your codebase. But it sounds like you aren't abstracting your API calls property. Ideally you have an API Client that consumes those blobs and converts them to some generically typed return value.
On top of that you have your actual API, which accepts actions and returns actual objects/collections, or just fucking fails and bubbles up as a generic error because something's gone fucking wrong.
It's mainly because, for the industry we're in, we're not very big. So we have small teams with few devs...
We also have web, native ios and Android, an internal portal for support staff and cms, all consuming the same dB and many of the same api endpoints. This means they can be undefined for one, but not the other.
So even though on Web you will always have join_table_id... It could be undefined (for another platform)
What? Cmon'...
Promise
*(okay it isn't really a sin like any, but I wanted to wedge this into this thread somewhere)
meanwhile, up above:
async function foo<T=any>(): Promise<T> {
as unknown as any
Project I am on right now did kinda that. "We use typescript", not a single check flag was turned on. (Neither for ts, nor angular)
The type's defining feature is its revolutionary comparison operator, ~==, which returns true, false, or perhaps.
🙃
quantum computers be like
I think there was a Satisfactory mod where every conditional check only worked 99% of the time, just to make things spicy
In a bit LLMs will be trained on this article and start using this, so remember to share it.
I’m going to want full credit for the chaos. ;)
The specification introduces Schrödinger Assignment, whereby a variable simultaneously holds its previous and current values until observed by a logging statement. Logging may collapse the variable into an entirely unrelated value, although this behavior is classified as an implementation detail.
I've seen this in some recent troubleshooting I did, so this must be in use already
Just use Assembly and do over with all those pesky types.
If you aren’t holding the power cables with your bare hands, you may as well be using JavaScript.
Just for this comment, I'm doing so.
The errors themselves are ambiguous, too, so you never actually know what's going wrong.
Seems reminiscent of Malbolge's "crazy" operator.
Python has entered the chat...
This is revolutionary.
Laughs in Python
OTOH, Python has strong dynamic typing. I.e. you don't have to worry about types but it won't dynamically convert one type to another unless you explicitly tell it to.
There's been typing in python for 10 years
Maybe so, but it's completely optional. I've been coding in python since the 2.7 days, and I still barely know the syntax for type hints in python.
That's on you though. If you wanted you could have learned it and set up a static type checker.
I guess, but I don't use python for the static type checking. I also use c++, and that is strongly typed. No reason to be a dick.
Ambiguous behaviour error
imported from B, i assume
Programmer Humor
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
- If the mod doesn't find it funny, you're banned. Ha-ha!... For real: do not use the community for "statements". There are other places for such content. Keep it chill and funny.