Constraints giới hạn type parameter phải extend một type cụ thể, ngăn dùng với types không compatible.
typescript
// Không có constraint — không access được .length
function getLength<T>(arg: T): number {
return arg.length; // Error!
}
// Có constraint
function getLength<T extends { length: number }>(arg: T): number {
return arg.length; // OK
}
// keyof constraint — type-safe property access
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const name = getProperty({ name: 'An', age: 25 }, 'name'); // string
// Multiple constraints
function merge<T extends object, U extends object>(a: T, b: U): T & U {
return { ...a, ...b };
}