function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const person = { name: 'Alice', age: 30 };
const name = getProperty(person, 'name'); // valid
const age = getProperty(person, 'age'); // valid
// const gender = getProperty(person, 'gender'); // error
interface ApiResponse<T = any> {
data: T;
status: number;
error?: string;
}
const response: ApiResponse<{ userId: number }> = {
data: { userId: 1 },
status: 200
};
const defaultResponse: ApiResponse = {
data: {},
status: 200
};