Syntax
value as Type;
value satisfies Type;Examples
as - Overriding Inference
Asserting a more specific type than TypeScript would infer on its own.
const input = document.getElementById("email") as HTMLInputElement;
input.value = "test@example.com"; // .value only exists on HTMLInputElement, not the general HTMLElement
const data = JSON.parse(jsonString) as { name: string; age: number };satisfies - Validate Without Widening
Checking a value matches a type while keeping its most specific inferred type.
type Colors = Record<string, string>;
const palette = {
red: "#ff0000",
green: "#00ff00"
} satisfies Colors;
// With satisfies, palette.red is still known as the literal "#ff0000"
// With a plain type annotation (: Colors), it would widen to just "string"
console.log(palette.red.toUpperCase()); // still gets full autocomplete on the specific keysBest practices
- Use as sparingly - it disables some of TypeScript's checking, so an incorrect assertion can hide real bugs rather than catch them
- Prefer satisfies over as when you want validation against a type while preserving the most specific inferred type of the value itself
- Never use as to force incompatible types together - if truly necessary, assert to unknown first (value as unknown as Type), which signals the risk explicitly
- Reach for a type guard (like a typeof or instanceof check) instead of as whenever runtime validation is genuinely possible
Runtime & versions
Compiled to JavaScript. Feature availability depends on the language and runtime version used by your project; consult the official reference below.
TypeScript Handbook