Unknown
unknown
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. Likewise, no operations are permitted on an unknown
without first asserting or narrowing to a more specific type.
function f1(a: any) {
a.b(); // OK
}
function f2(a: unknown) {
// Error: Property 'b' does not exist on type 'unknown'.
a.b();
}
Learn more from the following links: