DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Karishma
Karishma

Posted on • Updated on

'any' vs 'unknown' in TypeScript πŸ‘€

When you start learning TypeScript, you will come across two types - any and unknown.

any - The any type allows us to assign literally β€œany” particular value to that variable, simulating what we know as plain JavaScript.

unknown - The unknown type is the type-safe counterpart of any. Anything is assignable to unknown, but unknown isn't assignable to anything but itself and any without a type assertion or a control flow based narrowing.

Let's understand with an example.

let age: number;
let userAge: any;

userAge = 'This is some age';
userAge = 20;

age = userAge;
Enter fullscreen mode Exit fullscreen mode

This code works! πŸŽ‰ Type of userAge is any so it can be assigned any value - string, number etc.

let age: number;
let userAge: unknown;

userAge = 'This is some age';
userAge = 20;

age = userAge;
Enter fullscreen mode Exit fullscreen mode

The statement age=userAge gives an error.
I mean, the type is unknown so what is the problem here? To assign an unknown value to a value with a fixed type, we have to do some quick type check!

let age: number;
let userAge: unknown;

userAge = 'This is some age';
userAge = 20;

if(typeof userAge === 'number') {
  age = userAge;
}
Enter fullscreen mode Exit fullscreen mode

And now this works too! πŸŽ‰

When to use what? πŸ€”
You shouldn't use either of them. But if you really have to then unknown is a better choice if you know what you want to do with that value eventually.
I don't recommend using any - it takes away the actual essence of TypeScript!

Thank you for reading :)

Top comments (3)

Collapse
 
johnkey profile image
INDERA SHAH

πŸ‘πŸ‘πŸ‘πŸ‘

Collapse
 
jesusparra profile image
JesusParra

Thanks, it was easy to understand!

Collapse
 
patrickcodes profile image
Patrick

This is great πŸ‘πŸ‘
Most of the blogs are too long to read. This explains it very quickly.
Thank you!

🌚 Browsing with dark mode makes you a better developer.

It's a scientific fact.