# Union & Intersection Types — TypeScript

Source: https://www.geekswithgeeks.com/en/typescript/ts-union-intersection

> Combine types with OR (union) or AND (intersection).

## Union types

`|` means "this value can be one of several types" — very common for IDs and API results.

```typescript
function printId(id: string | number) {
  console.log(`ID: ${id}`);
}
printId(101);
printId("abc-101");
printId(true);
// Error: Argument of type 'boolean' is not assignable...
```

## Intersection types

`&` merges multiple types into one that must satisfy **all** of them at once.

```typescript
type Named = { name: string };
type Aged = { age: number };
type Person = Named & Aged;

const p: Person = { name: "Ada", age: 36 }; // must have both
```

## OR vs AND

Union (`|`) narrows what's **allowed** — any one of the listed types. Intersection (`&`) widens what's **required** — every property from every type.
