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;
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;
The statement age=userAge
gives an error.
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;
}
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!
Top comments (3)
๐๐๐๐
Thanks, it was easy to understand!
This is great ๐๐
Most of the blogs are too long to read. This explains it very quickly.
Thank you!