moving on to this final example. This is by far the most common way I use the satisfies keyword, and I absolutely love it. In this particular case, we have this grade type here, which is just an enum essentially, A, B, C, D, or F. And we have a function called get grade description. You pass it in a grade, and it returns a string for all the different grades that you could possibly have. You can see here I'm calling this with A, B, C, D, and F. And when I go ahead and I actually run this code, so we'll just run that grade. ts. You'll notice the output here I get is excellent, good, average, below average. And then for F, it's returning undefined. It should be returning some type of string like failing or something like that, but it's returning undefined. And that's because when I wrote my switch statement up here, I forgot to add the case for F. Now, this is something that's very easy to do, and especially if I come along and say, you know what, there's a new grade. We're going to add an S-grade into this. Now again, I need to go back and remember all the places that I used this switch statement for my grade and update every single one of them. That's really hard to remember, especially if you have thousands and thousands of files of code. So instead, what we want to do is we're going to add a default type to the very end of this. This default type is not going to do anything other than throw an error or whatever you want. I generally just throw an error. So we'll say throw new error, invalid type, just like that. We'll use string template literal just so we can embed this directly into there. and we'll say grade and we'll say invalid grade. There we go. So now I'm just throwing an error that we have an invalid grade. So at least when I rerun this code, I'll get an error now instead. You can see I get a giant error essentially saying invalid grade F. But what I want to do is I want to add type safety to this forcing me to define all my different cases. To do that, all we can do down here. Our grade right now is the value F. You can see it's clearly the value F cuz that's the one that I forgot. What I can do is I can add a satisfies onto here. I want to say that this should satisfy the never type. And the only way this will satisfy the never type is if I make sure I cover every single one of my cases because if they're all covered already, then this should never be executable, which means my grade will be a type of never. Now, in my case, it's not a type of never. So, I get an error right here in Typescript immediately. That lets me know, hey, I forgot to add one of my cases. In our case, I forgot the F case. So, let's just return something like failing. There we go. And now you can see that this grade for satisfies never is correct. And when I hover the type of this, you can see it is the never type. If I run my code, everything should be working. You can see it returns all my different grades. And again, if I add a brand new grade, let's say s onto here, it immediately throws me an error everywhere in my code where I put this satisfies never. I don't write any switch statements anymore in Typescript without having this satisfies never at the end because it makes sure that I will always come back and update my switch statements anytime the enum or value that they're based on changes. And this technique really helped me rethink how I look at type safety because now I really try to focus on making my type safety a compiler thing that really will throw me warnings or errors whenever I change my code. I almost view it as a refactoring tool. When I refactor places in my code, I immediately want to get changes in my TypeScript or errors in my TypeScript telling me where those problems are. And this satisfies keyword in combination with switch statements makes this incredibly easy for this style of code. Now, as I mentioned already, if you want to learn more about TypeScript utility types, I have a full cheat sheet that covers everything you could ever want to know. I have it both in light mode and dark mode. It'll be linked down in the description below. And I also have my full TypeScript course which covers everything you need to know from absolute beginner to intermediate level TypeScript. That'll be linked in the description as well. With that said, thank you very much for watching and have a good