In TypeScript, any is a type that is used when the type of a variable is unknown or could be of any type. It allows you to opt-out of
type-checking and let the values pass through compile-time checks. In other words, it prevents the compiler from reporting type errors, which can lead
to runtime errors.
On the other hand, unknown is a type-safe alternative to any. It forces you to perform certain checks before performing
operations on variables of type unknown. This means you can’t accidentally perform arbitrary operations on variables of type
unknown, which helps prevent runtime errors.
It’s generally recommended to avoid using any when possible, and instead use more specific types or generics for better type safety.
If you want to maintain type safety, it’s better to use unknown instead of any.
function logValue(value: any) { // Noncompliant: 'value' is not type-checked
console.log(value);
}
logValue(123);
logValue('Hello');
You should use unknown instead of any and narrow it down with type guards.
function logValue(value: unknown) {
if (typeof value === 'number') {
console.log(value.toFixed(2));
} else if (typeof value === 'string') {
console.log(value.trim());
}
}
logValue(123);
logValue('Hello');