function sortByNameKey<T extends { name: string }>(arr: T[]): T[] { return arr.sort((a, b) => a.name.localeCompare(b.name)); } // Example usage with objects having a 'name' property: interface Person { name: string; age: number; } const people: Person[] = [ { name: "Charlie", age: 20 }, { name: "Alice", age: 25 }, { name: "Bob", age: 30 } ]; const sortedPeople = sortByNameKey(people); console.log(sortedPeople); // Output: // [ // { name: "Alice", age: 25 }, // { name: "Bob", age: 30 }, // { name: "Charlie", age: 20 } // ] // Example usage with different objects having a 'name' property: interface Product { name: string; price: number; } const products: Product[] = [ { name: "Banana", price: 1.0 }, { name: "Apple", price: 1.5 }, { name: "Cherry", price: 2.0 } ]; const sortedProducts = sortByNameKey(products); console.log(sortedProducts); // Output: // [ // { name: "Apple", price: 1.5 }, // { name: "Banana", price: 1.0 }, // { name: "Cherry", price: 2.0 } // ]