Advanced Type Patterns
Intersection Types
Intersection types combine requirements from multiple object types into one value.
Intersection Types
intersections.ts
type User = {
name: string;
};
type AuditInfo = {
role: string;
active: boolean;
};
type AuditedUser = User & AuditInfo;
function summary(user: AuditedUser): string {
const state: string = user.active ? "active" : "inactive";
return `${user.name}:${user.role}:${state}`;
}
const active: boolean = ;
const user: AuditedUser = { name: "Ada", role: "admin", active: active };
console.log(summary(user));
type User = {
name: string;
};
type AuditInfo = {
role: string;
active: boolean;
};
type AuditedUser = User & AuditInfo;
function summary(user: AuditedUser): string {
const state: string = user.active ? "active" : "inactive";
return `${user.name}:${user.role}:${state}`;
}
const active: boolean = ;
const user: AuditedUser = { name: "Ada", role: "admin", active: active };
console.log(summary(user));
intersection type
An intersection type such as `User & AuditInfo` requires members from both types.