TypeScript provides an unknown type which is just like any, but not assignable to anything:

const first: any = 42;
const second: unknown = 42;

const foo: number = first; // this is valid...
const bar: number = second; // ...while this is NOT

This brings an additional layer of type safety, especially on system borders - we may want to make sure a specific variable won’t accidentally “leak” to the rest of the system and cause runtime errors due to incorrect type assumptions.

More details can be found here.