curring 과 composition 활용으로 함수형 프로그래밍이 가능하다.
const person = {
firstName: "no",
lastName: "ka",
nickname: "john",
};
const getPerson = {
name: (obj) => {
console.log(obj.firstName);
return obj;
},
all: (obj) => {
console.log(obj);
return;
},
};
const setPerson = {
nickname: (obj) => {
console.log("update obj nickname");
obj.nickname = "newNickname";
return obj;
},
name: (obj) => {
obj.name = "newName";
return obj;
},
};
const compose =
(...fns) =>
(obj) =>
fns.reduce((acc: any, f: any) => f(acc), obj);
compose(
getPerson.name,
setPerson.nickname,
setPerson.name,
getPerson.all
)(person);