Start here. This is the direct spoken answer to practice first.
Why this question matters
TypeScript protects code only after data has been given a trustworthy shape. API responses, browser storage, URL values, and third-party messages arrive at runtime and can violate compile-time assumptions.
any disables type checking for the value and lets unsafe operations spread through the code. unknown says that a value exists but its shape is not trusted yet, so I have to narrow or validate it before reading properties. For a small value I can use type guards. For an API payload I usually parse it with a runtime schema and convert it into the application's trusted type.