如何更改sortArrayItemsByDate
的签名(内联(,从而引入以下附加约束(累积(:
T
应该有一个名为propName
的键(值位于对象键名中(T[propName]
应为字符串(同时(
链接到StackBlitz游乐场
const sortArrayItemsByDate = <T>(items: T[], propName: string): T[] =>
items.sort((a: T, b: T) => Date.parse(a[propName]) - Date.parse(b[propName]));
interface StudentModel {
name: string;
birthday: string;
}
const s0: StudentModel = {
name: "Peter",
birthday: "2001-11-23",
};
const s1: StudentModel = {
name: "John",
birthday: "2003-11-30",
};
const students: StudentModel[] = [s0, s1];
const studentsSorted = sortArrayItemsByDate(students, 'birthday');
约束T
以扩展Record<keyof T,string>
并制作propName
:keyof T
const sortArrayItemsByDate = <T extends Record<keyof T,string>>(items: T[], propName: keyof T): T[] =>
items.sort((a: T, b: T) => Date.parse(a[propName]) - Date.parse(b[propName]));