interface UserAPIResponse {
user: {
id: number;
name: string;
email: string;
roles: Array<{
name: string;
permissions: string[];
scope: {
resource: string;
actions: string[];
};
}>;
metadata: {
createdAt: string;
lastLogin: string;
};
};
}
// Extract types without redefining
type User = UserAPIResponse["user"];
// Extract Nested Object
type UserMetadata = UserAPIResponse["user"]["metadata"];
// Extract Array Element Type
type Role = UserAPIResponse["user"]["roles"][number];
// Extract from Nested Array
type Permission = Role["permissions"][number];
// OR (direct access)
type Permission2 = UserAPIResponse["user"]["roles"][number]["permissions"][number];
// Extract Nested Object from Nested Array
type RoleScope = UserAPIResponse["user"]["roles"][number]["scope"];
// OR (via Role type)
type RoleScope2 = Role["scope"];@WebDev_Plus