객체를 소트하기 위해서는 비교하는 함수를 넣어줘야 한다.
객체배열.sort(compare('키값'));
비교하는 함수 compare 함수를 구성할 때
타입스크립트에서는 string 타입과 string literal 타입을 구분한다고 한다.
따라서 key:string으로 compare 함수를 구성할 때 객체에 key값으로 접근하면 실행은 되나 화면에 빨간 줄이 뜬다.
그래서 string literal 타입으로 만들어서 넣어줘야 한다.
아래는 예시이다.
type code = 'code'; // string literal type으로 만듦.
type name = 'name';
const compare = (key: code | name) => (a: myObjectType, b: myObjectType) => {
if (a[key] > b[key]) {
return 1;
}
if (a[key] < b[key]) {
return -1;
}
return 0;
};
const sortByCode = () => {
array.sort(compare('code'));
};
const sortByName = () => {
array.sort(compare('name'));
};
참고 :: https://soopdop.github.io/2020/12/01/index-signatures-in-typescript/