any vs unknown vs never: TypeScript demystified

  Рет қаралды 24,912

Andrew Burgess

Andrew Burgess

Күн бұрын

Пікірлер: 53
@kugi7786
@kugi7786 Жыл бұрын
you going over the parts of the language that i didn't know is a huge help, love your videos
@balaganesh3440
@balaganesh3440 Жыл бұрын
That was the most clear and simple explanation of never, I've ever come across. You've really demystified it!
@merotuts9819
@merotuts9819 Жыл бұрын
These types mixed with Set theory makes great sense. Thanks Andrew.
@rlkandela
@rlkandela Жыл бұрын
The exhaustive switch is amazing
@javo2432
@javo2432 Жыл бұрын
this video popped out on my recommendation but i watched the whole thing thanks
@mbossaful
@mbossaful 4 ай бұрын
Great video! Another use for the 'never' type is as the return type of functions that will always throw (e.g. exception helper functions). This lets the IDE detect any code after the function call as unreachable.
@ДилишШадманов
@ДилишШадманов Жыл бұрын
The simple and understandable explanation i have ever seen about typescript types
@helsontaveras7961
@helsontaveras7961 Жыл бұрын
I will like every video you post because they’re all amazing.
@_briantravis
@_briantravis 11 ай бұрын
amazingly clear explanation, subscribed!
@ivaylopetrov9956
@ivaylopetrov9956 Жыл бұрын
Thank you, man! SetTheory rules 💪
@dinckelman
@dinckelman Жыл бұрын
Unknown is up there on the godtier list along with the generics
@ajgubi19
@ajgubi19 Жыл бұрын
Hands down the best explanation of these three keywords. Loved it! Understood it for the very first time. Thank you! Subscription already paying off!
@Eitrii
@Eitrii Жыл бұрын
Your explanation just gave me the 'ooOOOooohh!' moment. Liked and subscribed
@JakeAndDaddy
@JakeAndDaddy Жыл бұрын
I’m a hard man to please when it comes to developed KZbin channels. I’ve seen it and done it all. I’ve got to say though that your content and the way it’s presented is vastly superior to a lot of channels that had exponential growth.
@joel_bio
@joel_bio 6 ай бұрын
Fantastic perspective
@ramiworkstation
@ramiworkstation 3 ай бұрын
Thank you very much. very useful lesson. Thank you for sharing 🙏
@Luxcium
@Luxcium Жыл бұрын
The colour grading of those video makes me so happy, the iconic face of Andrew even more and the quintessence of all that being about typescript is making me feel so privilege and lucky to exist in a univers where it is possible to witness any of this
@andrew-burgess
@andrew-burgess Жыл бұрын
Ha, you're too kind. Colour Grading === whatever comes out of my iPhone.
@Luxcium
@Luxcium Жыл бұрын
@@andrew-burgess you are filming this with your phone 📱 wow 🤩
@FunctionGermany
@FunctionGermany Жыл бұрын
3:52 i would have mentioned that you probably wouldn't want to write a lot of this kind of manual object parsing code. it gets very messy and you're probably best off using something like zod to parse unknown objects.
@andrew-burgess
@andrew-burgess Жыл бұрын
Oh yeah, absolutely! I just wanted to show how to narrow from unknown to something more concrete. But I’d probably only use this approach for primitives.
@viridianite
@viridianite Жыл бұрын
You're killing it with these videos, Andrew! I think what many tech videos about languages miss is pragmatism and usage, after all anyone can read the docs and figure out syntax. However you've found a balance between theory and pragmatism.
@ankitputhran
@ankitputhran Жыл бұрын
Wonderful explanation
@vOnez212
@vOnez212 9 ай бұрын
Great explanation!
@fallingseasy
@fallingseasy Жыл бұрын
Thanks! Great video
@nielsgregersen1351
@nielsgregersen1351 Жыл бұрын
I assume that Record means that the type could also be Record ?
@andrew-burgess
@andrew-burgess Жыл бұрын
Hmm, maybe? Not sure why though, because I already validated that foobar is a number.
@nielsgregersen1351
@nielsgregersen1351 Жыл бұрын
@@andrew-burgess You validated that what was assigned to it at runtime was a number let a :string | number = 42; if ( typeof a === 'number') { console.log(a) }
@yitzchaksviridyuk932
@yitzchaksviridyuk932 Жыл бұрын
@@andrew-burgess This is what ChatGPT says: "The reason why TypeScript still shows val.foobar as unknown inside the if block is due to a limitation in the current version of TypeScript's control flow analysis. Although TypeScript is able to narrow down the type of val based on the if statement condition, it is not yet able to use this information to refine the type of val.foobar to number. Instead, TypeScript conservatively treats val.foobar as unknown to ensure that the code is type-safe." So there you go, one day we'll get there. 😂 Btw, I also checked why Typescript allows us to assign 5 to val.foobar if val.foobar is considered unknown. ChatGPT said that Typescript is performing implicit type assertion in this case.
@Luxcium
@Luxcium Жыл бұрын
So you have me who is passionate about both this content creator and the language *TypeScript* watching a video about something that became somehow really trivial (It was not at the beginning do not worry if you are new to TypeScript and trying to understand *any* can *never* be trivial while it is *unknown* )...
@arunbm123
@arunbm123 4 ай бұрын
Nice explanation
@EnzoAuditore
@EnzoAuditore 10 ай бұрын
Thanks mate
@ΣτάθηςΣταθόπουλος-σ7ρ
@ΣτάθηςΣταθόπουλος-σ7ρ 5 ай бұрын
At 4:30, that got fixed at version 5.5.
@tech_channel110
@tech_channel110 6 ай бұрын
well defined
@ayushdixit8993
@ayushdixit8993 11 ай бұрын
Thanks Man....
@dawid_dahl
@dawid_dahl Жыл бұрын
5:20 ”That type of thing.” I saw that you did there.
@JohnWasinger
@JohnWasinger Жыл бұрын
I bet you never thought you’d fall this deep into your tutorial watching journey.
@RomanDawydkin
@RomanDawydkin Ай бұрын
Another use of "never" is the return type for functions that always throw an error.
@RozbehSharahi
@RozbehSharahi 10 ай бұрын
The record example might be misleading. In the record example the reason for Record is following: You just verified that foobar is currently a number, but there is no definition that foobar _must_ be a number. So within your if, you can do number operations like "toFixed", but nobody is prohibiting you to write a string or anything else on it (no-type-declaration).
@RozbehSharahi
@RozbehSharahi 10 ай бұрын
To solve this you'd need to create another object Object-B with clear type-definitions and pass the values to it. This way you define that Object-B must have foobar as number.
@deatho0ne587
@deatho0ne587 Жыл бұрын
I just wish there was no production code that had the any type. I get it, but man are certain things hard to narrow down. And tryting to add strict mode to the whole code base is just going to make the Bussiness not happy for the tech debt it will incure.
@coolmind2476
@coolmind2476 8 ай бұрын
Great video. Lets say val is unknown and an object. How to get all components of the unknown object? So instead of checking if foobar in val, I want to get a list of all available components and then check the values of those components.
@clasesutnfrc8699
@clasesutnfrc8699 Жыл бұрын
02:29 How should we use the unknown type?
@juanmiguel431
@juanmiguel431 Жыл бұрын
But I think you can check the type of a variable defined as any type.
@jeetchheda8916
@jeetchheda8916 2 ай бұрын
Now help me make use of Unknown type when i want to say that this unknown function argument is of type of my custom interface. How do i do that ?
@Luxcium
@Luxcium Жыл бұрын
any is the set of all set a cursed concept that is analogous to the nonexistence of both the type checker and set of all set then unknown is the set of all type... never the empty set...
@siya.abc123
@siya.abc123 Жыл бұрын
I have to subscribe now, been coming across your clear and to the point clips for a while but somehow I didn't subscribe
@bardbard2
@bardbard2 2 ай бұрын
I like never!
@soniablanche5672
@soniablanche5672 Жыл бұрын
void vs undefined
@enzodossantos2546
@enzodossantos2546 Жыл бұрын
Void: nothing to return. Undefined: create a variable and don't assign a value.
@soniablanche5672
@soniablanche5672 Жыл бұрын
@@enzodossantos2546 It's confusing because in JavaScript when you return nothing you are actually returning undefined
@JarheadCrayonEater
@JarheadCrayonEater 3 ай бұрын
Yeah it sends money.
@ericb314
@ericb314 6 ай бұрын
type TODO = any;
Interfaces vs Type Aliases: what's the difference?
10:20
Andrew Burgess
Рет қаралды 22 М.
Players vs Pitch 🤯
00:26
LE FOOT EN VIDÉO
Рет қаралды 136 МЛН
What type of pedestrian are you?😄 #tiktok #elsarca
00:28
Elsa Arca
Рет қаралды 34 МЛН
will i never understand this? unknown.
12:05
Andrew Burgess
Рет қаралды 3,9 М.
I Cannot Believe TypeScript Recommends You Do This!
7:45
Web Dev Simplified
Рет қаралды 177 М.
JavaScript Prototypes: The interview question that stumped me
17:16
techgirlinstyle
Рет қаралды 1,4 М.
Welcome to Async Generators in JavaScript
10:53
Andrew Burgess
Рет қаралды 5 М.
The TypeScript feature I never use
10:49
Andrew Burgess
Рет қаралды 12 М.
Why use Type and not Interface in TypeScript
14:12
ByteGrad
Рет қаралды 215 М.
3 typescript tips from my own code
12:11
Andrew Burgess
Рет қаралды 6 М.
How to use TypeScript Enums and why not to, maybe
12:43
Andrew Burgess
Рет қаралды 19 М.
Let's Fix The Fatal Flaw in TypeScript's Union Types!
13:45
Typed Rocks
Рет қаралды 22 М.
Building Fluent Interfaces in TypeScript
16:15
Andrew Burgess
Рет қаралды 16 М.
Players vs Pitch 🤯
00:26
LE FOOT EN VIDÉO
Рет қаралды 136 МЛН