You can use the extends
keyword to constrain a generic type to a subset of types that satisfy a particular condition.
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
const person = { name: 'Alice', age: 25 };
const name = getProperty(person, 'name'); // Works
// const invalid = getProperty(person, 'invalidKey'); // Error: Argument of type '"invalidKey"' is not assignable to parameter of type '"name" | "age"'.