급변하는 기술 시장에서 살아남기 위해 Typescript 공부를 시작하였습니다...
과연 저는 살아남을 수 있을까요?!
이번에는 지난 번 배웠던 제네릭 타입처럼 내장된 다른 유틸리티 타입에 대해 알아보도록 하겠습니다!
내용이 많을 것 같지만 배울 것은 두 개,
Partial 타입과 Readonly 타입 입니다!
이 파셜타입은 언제쓸까요?
객체의 속성을 지정하여 타입처럼 사용할 때,
이 객체의 모든 속성이 아니라 선택적으로 사용할 수 있게 하려면 파셜타입이 유용합니다.
예제를 보시죠!
interface Todo {
title: string;
description: string;
}
//Todo 타입의 속성을 선택적으로 받을 수 있습니다!
function updateTodo(todo: Todo, fieldsToUpdate: Partial<Todo>) {
return { ...todo, ...fieldsToUpdate };
}
const todo1 = {
title: "organize desk",
description: "clear clutter",
};
const todo2 = updateTodo(todo1, {
description: "throw out trash",
});
이 예제의 updateTodo의 매개변수 fieldsToUpdate는 Partial을 사용했기 때문에
title 속성을 받지 않고 description만 받아도 에러가 생기지 않습니다.
이렇게 Partial을 사용하면 타입의 속성을 선택적으로 받을 수 있습니다.
배열이나 객체의 요소들을 더 이상 건드리지 않고
생성, 삭제 등의 작업을 할 수 없도록 할 때 어떻게 할까요?
리드온리 타입으로 바꿔주면 말 그대로 읽기만 하도록 할 수 있습니다!
이것도 예제를 보시죠!
interface Todo {
title: string;
}
const todo: Readonly<Todo> = {
title: "Delete inactive users",
};
//이것을 수정, 삭제 도는 assign 등을 사용하면 에러가 납니다!
todo.title = "Hello";
위 예제의 todo.title의 값을 수정, 삭제하거나 todo 객체에 assign 등을 사용하면 에러가 납니다.
마치 잠금한 것처럼 Readonly를 사용해 todo를 읽기 전용으로 만들었기 때문입니다.
이번에는 간단하게 제네릭 타입에 이어 내장 유틸리티 타입 몇가지를 살펴보았습니다.
더많은 내장 유틸리티 타입은 참고에 링크로 걸어놓겠습니다!
저는 다음 시간에도 살아남을 수 있을까요?!😂