Use ‘unknown’ instead of ‘any’ in TypeScript (Try / Catch error handling)
Vložit
- čas přidán 6. 06. 2024
- 👉 NEW React & Next.js Course: bytegrad.com/courses/professi...
Hi, I'm Wesley. I'm a brand ambassador for Kinde (paid sponsorship).
👉 Add authentication to your app FAST: bit.ly/3QOe1Bh
👉 NEW React & Next.js Course: bytegrad.com/courses/professi...
👉 Professional JavaScript Course: bytegrad.com/courses/professi...
👉 Professional CSS Course: bytegrad.com/courses/professi...
👉 Discord: all my courses have a private Discord where I actively participate
🔔 Email newsletter (BIG update soon): email.bytegrad.com
⏱️ Timestamps:
0:00 data: unknown
1:06 ts-reset
1:36 error: unknown
4:59 Handle unknown
8:03 Utility function
#typescript #typescripttutorial
👉 NEW React & Next.js Course: bytegrad.com/courses/professional-react-nextjs
Thank you for explaining this well, i have banged my head on JS error handling for so long
Hello ByteGrad I was struggling with error handling and your tutorial really helped dealing with errors loved your content good luck
This is pure gold! Thanks a lot!!!
Your tutorials and content are A Class. Just get a better microphone if possible. Thanks
yap, sounds is too low.
Your really good explaining, keep going Cheers
Amazing! Thanks
thank you for sharing this topic
Thanks finding a solution for this :D
This is awesome!
Hello, awesome channel for a noob like me! I was wondering, at 10:42 in our utility function couldn't we just omit to type the message as string and instead in the return do something like "return message.toString()" ?
That's exactly how I handle request errors in our projects. 😅 Those Python develelopers cannot agree with Java developers on error response, and they both think it is easy to handle those errors in the client side.
Thanks a lot. keep going
We still not consider the case where "message" is also an object
Thank you chris
I didn't know there was an unknown type 😮
What about to save mark as 'any' and use following: console.log(error?.message || error?.stack || error); It is suitable for all error data types
I would write
... else if (error && typeof error === "object" && "message in error && typeof error.message === "string") { ...
If there is a message in an error object but it isn't a string, it should possibly use the default error message instead.
Good point
cool
Thanks.
export const getErrorMessage = (error: unknown) => {
if (error instanceof Error || (error && typeof error === "object" && "message" in error && typeof error.message === "string")) {
return error.message;
} else if (typeof error === "string") {
return error;
}
return "Something went wrong";
};
use a generic API response wrapper
Why use unknown and any in typescript?
const res = ... as unknown as any
I prefer
typeof error?.message === "string"
What if error.message is is an object, HTML, etc... Casting to string then would not be really safe.
Good point
It is good for another video about TypeGaurds maybe.
Then that would be [object Object]
The thing is even if it is an object should you trust it for display purposes?
use zod
the fn is async, and he used the then, man just use await