4 ms·
Consider a ‘dump’ function. By design, it handles anything you throw at it - strings, objects, booleans, etc. It won’t change. That’s ‘Any’. Whereas ‘Unknown’
by blowski 4y ago
Consider a ‘dump’ function. By design, it handles anything you throw at it - strings, objects, booleans, etc. It won’t change. That’s ‘Any’.
Whereas ‘Unknown’ might be a stepping stone to introduce a more specific type once all the use cases are known. I let it handle strings and integers, log a line about any other type that calls it, and continue behaviour as it is today.
- dtech 4y agoSuch a `dump` function would be 100% the same with unknown, since all types can be converted to top types (both any and unknown in TS)
- badlucklottery 4y agoThe difference comes when you interface with other well-typed code and want to convert from any/unknown down to a specific type. For example: function handleString(s: string) { //... } declare const a: any; declare const u: unknown; handleString(a); // works with zero intervention handleString(u); // error: Argument of type 'unknown' is not assignable to parameter of type 'string' handleString(u as string); // works again with explicit re-typing
- capableweb 4y agoA dump function accepting "unknown" is signalling "I'm not sure what this function could handle, probably a lot of different types" vs accepting "any" where it's telling you "I can accept any type you throw at me".