Docs
/
TypeScript
Chapter 17
03 — TypeScript Advanced
Advanced Types
type StringOrNumber = string | number;
type Maybe<T> = T | null;
type Nullable<T> = T | undefined | null;
type Status = 'loading' | 'success' | 'error';
interface User {
id: number;
name: string;
email?: string;
}
type PartialUser = Partial<User>;
Generics
function identity<T>(arg: T): T {
return arg;
}
interface Lengthy {
length: number;
}
function logLength<T extends Lengthy>(item: T): T {
console.log(item.length);
return item;
}
Utility Types
interface User {
id: number;
name: string;
email: string;
}
type UserPreview = Pick<User, 'id' | 'name'>;
type UserPartial = Partial<User>;
type UserRequired = Required<User>;
Key Takeaways
- Use generics for reusable components
- Utility types for common transformations
- Interfaces for object shapes
- Type guards for runtime checking