# any & unknown — TypeScript

Source: https://www.geekswithgeeks.com/en/typescript/ts-any-unknown

> Two ways to opt out of type safety — one dangerous, one safe.

## any: the escape hatch

`any` turns off type checking for that value completely. It compiles, but you've thrown away TypeScript's whole point.

## unknown: the safer any

`unknown` accepts anything too, but you **must narrow** it before using it — TS forces a check first.

```typescript
let data: unknown = JSON.parse('"hello"');
data.toUpperCase();
// Error: 'data' is of type 'unknown'.

if (typeof data === "string") {
  data.toUpperCase(); // OK, narrowed to string
}
```

## Prefer unknown over any

For truly unpredictable data (API responses, JSON), reach for `unknown` and narrow it — keep `any` only as a last resort.
