F-Lab
🚀
상위권 IT회사 합격 이력서 무료로 모아보기

TypeScript에서 유틸리티 타입 활용하기

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

AI가 제공하는 얕고 넓은 지식을 위한 짤막한 글입니다!



TypeScript에서 유틸리티 타입 활용하기

TypeScript는 강력한 타입 시스템을 제공하여 개발자가 더 안전하고 유지보수하기 쉬운 코드를 작성할 수 있도록 돕습니다. 그 중에서도 유틸리티 타입은 TypeScript의 타입 시스템을 더욱 강력하게 만들어주는 중요한 도구입니다. 이번 글에서는 TypeScript에서 제공하는 다양한 유틸리티 타입과 그 활용 방법에 대해 알아보겠습니다.

유틸리티 타입은 기존의 타입을 변형하거나 새로운 타입을 생성하는 데 사용됩니다. 이를 통해 코드의 재사용성을 높이고, 타입 정의를 더욱 간결하게 만들 수 있습니다. TypeScript는 여러 가지 유틸리티 타입을 제공하며, 이를 적절히 활용하면 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.

왜냐하면 유틸리티 타입은 기존의 타입을 변형하거나 새로운 타입을 생성하는 데 사용되기 때문입니다. 따라서 이를 적절히 활용하면 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.

이번 글에서는 TypeScript에서 제공하는 주요 유틸리티 타입인 Partial, Readonly, Pick, Omit, Record 등에 대해 알아보고, 이를 실제 코드에서 어떻게 활용할 수 있는지에 대한 예제도 함께 제공하겠습니다.

이 글을 통해 TypeScript의 유틸리티 타입을 이해하고, 이를 실제 프로젝트에 적용할 수 있는 방법을 배워보세요.



Partial 타입

Partial 타입은 기존의 타입을 기반으로 모든 속성을 선택적으로 만드는 유틸리티 타입입니다. 이를 통해 객체의 일부 속성만을 업데이트하거나, 선택적인 속성을 가진 객체를 생성할 수 있습니다.

예를 들어, 다음과 같은 코드를 살펴보겠습니다:

interface Person {
    name: string;
    age: number;
    address: string;
}

function updatePerson(person: Person, updates: Partial) {
    return { ...person, ...updates };
}

const person: Person = { name: 'John', age: 30, address: '123 Main St' };
const updatedPerson = updatePerson(person, { age: 31 });
console.log(updatedPerson);

위 코드에서 'updatePerson' 함수는 'Person' 타입의 객체와 'Partial' 타입의 업데이트 객체를 받아서, 업데이트된 새로운 'Person' 객체를 반환합니다. 'Partial' 타입을 사용함으로써, 업데이트 객체의 속성을 선택적으로 지정할 수 있습니다.

왜냐하면 Partial 타입은 기존의 타입을 기반으로 모든 속성을 선택적으로 만들기 때문입니다. 따라서 이를 통해 객체의 일부 속성만을 업데이트하거나, 선택적인 속성을 가진 객체를 생성할 수 있습니다.

이처럼 Partial 타입은 객체의 일부 속성만을 업데이트하거나, 선택적인 속성을 가진 객체를 생성할 때 유용하게 사용할 수 있습니다.



Readonly 타입

Readonly 타입은 기존의 타입을 기반으로 모든 속성을 읽기 전용으로 만드는 유틸리티 타입입니다. 이를 통해 객체의 속성을 변경할 수 없도록 할 수 있습니다.

예를 들어, 다음과 같은 코드를 살펴보겠습니다:

interface Person {
    name: string;
    age: number;
    address: string;
}

const person: Readonly = { name: 'John', age: 30, address: '123 Main St' };
person.age = 31; // 오류 발생

위 코드에서 'person' 객체는 'Readonly' 타입으로 선언되었기 때문에, 객체의 속성을 변경할 수 없습니다. 이는 객체의 속성을 읽기 전용으로 만들어, 불변성을 유지할 수 있도록 합니다.

왜냐하면 Readonly 타입은 기존의 타입을 기반으로 모든 속성을 읽기 전용으로 만들기 때문입니다. 따라서 이를 통해 객체의 속성을 변경할 수 없도록 할 수 있습니다.

이처럼 Readonly 타입은 객체의 속성을 읽기 전용으로 만들어, 불변성을 유지할 때 유용하게 사용할 수 있습니다.



Pick과 Omit 타입

Pick과 Omit 타입은 기존의 타입에서 특정 속성만을 선택하거나 제외하여 새로운 타입을 생성하는 유틸리티 타입입니다. 이를 통해 필요한 속성만을 가진 타입을 생성하거나, 특정 속성을 제외한 타입을 생성할 수 있습니다.

예를 들어, 다음과 같은 코드를 살펴보겠습니다:

interface Person {
    name: string;
    age: number;
    address: string;
}

type PersonNameAndAge = Pick;
type PersonWithoutAddress = Omit;

위 코드에서 'PersonNameAndAge' 타입은 'Person' 타입에서 'name'과 'age' 속성만을 선택한 타입입니다. 반면, 'PersonWithoutAddress' 타입은 'Person' 타입에서 'address' 속성을 제외한 타입입니다.

왜냐하면 Pick과 Omit 타입은 기존의 타입에서 특정 속성만을 선택하거나 제외하여 새로운 타입을 생성하기 때문입니다. 따라서 이를 통해 필요한 속성만을 가진 타입을 생성하거나, 특정 속성을 제외한 타입을 생성할 수 있습니다.

이처럼 Pick과 Omit 타입은 필요한 속성만을 가진 타입을 생성하거나, 특정 속성을 제외한 타입을 생성할 때 유용하게 사용할 수 있습니다.



Record 타입

Record 타입은 특정 키와 값을 가지는 객체 타입을 생성하는 유틸리티 타입입니다. 이를 통해 특정 키와 값을 가지는 객체 타입을 간편하게 생성할 수 있습니다.

예를 들어, 다음과 같은 코드를 살펴보겠습니다:

interface Person {
    name: string;
    age: number;
}

type PersonRecord = Record;

const people: PersonRecord = {
    john: { name: 'John', age: 30 },
    jane: { name: 'Jane', age: 25 }
};

위 코드에서 'PersonRecord' 타입은 'string' 키와 'Person' 값을 가지는 객체 타입입니다. 이를 통해 'people' 객체는 'string' 키와 'Person' 값을 가지는 객체로 선언되었습니다.

왜냐하면 Record 타입은 특정 키와 값을 가지는 객체 타입을 생성하기 때문입니다. 따라서 이를 통해 특정 키와 값을 가지는 객체 타입을 간편하게 생성할 수 있습니다.

이처럼 Record 타입은 특정 키와 값을 가지는 객체 타입을 생성할 때 유용하게 사용할 수 있습니다.



결론

이번 글에서는 TypeScript에서 제공하는 다양한 유틸리티 타입과 그 활용 방법에 대해 알아보았습니다. 유틸리티 타입은 기존의 타입을 변형하거나 새로운 타입을 생성하는 데 사용되며, 이를 통해 코드의 재사용성을 높이고, 타입 정의를 더욱 간결하게 만들 수 있습니다.

왜냐하면 유틸리티 타입은 기존의 타입을 변형하거나 새로운 타입을 생성하는 데 사용되기 때문입니다. 따라서 이를 적절히 활용하면 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.

이번 글에서는 주요 유틸리티 타입인 Partial, Readonly, Pick, Omit, Record 등에 대해 알아보고, 이를 실제 코드에서 어떻게 활용할 수 있는지에 대한 예제도 함께 제공하였습니다.

이 글을 통해 TypeScript의 유틸리티 타입을 이해하고, 이를 실제 프로젝트에 적용할 수 있는 방법을 배워보세요. 유틸리티 타입을 적절히 활용하면 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.

이처럼 TypeScript의 유틸리티 타입은 기존의 타입을 변형하거나 새로운 타입을 생성하는 데 유용하게 사용할 수 있습니다. 이를 통해 코드의 재사용성을 높이고, 타입 정의를 더욱 간결하게 만들 수 있습니다.

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수
logo
copyright © F-Lab & Company 2025