Generics
class
Generics create reusable components that work with multiple types while maintaining type safety.
Syntax
function fn<T>(arg: T): T { return arg; }
Example
javascript
// Generic function
function identity<T>(arg: T): T {
return arg;
}
identity<string>('hello'); // returns string
identity<number>(42); // returns number
// Generic interface
interface ApiResponse<T> {
data: T;
status: number;
message: string;
}
type UserResponse = ApiResponse<User>;
type ListResponse = ApiResponse<User[]>;
// Constrained generic
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}