TypeScript의 유틸리티 타입 (1)

eeensu·2023년 12월 18일
0

typescript

목록 보기
18/22
post-thumbnail

Partial<T>

TypeScript의 Partial 타입은 제네릭 타입으로, 주어진 객체 타입의 모든 속성을 선택적으로 만들어주는 유틸리티 타입이다. 이것은 주로 객체의 일부 속성을 업데이트하거나 변경할 때 유용하게 사용된다.

예를 들어, 다음은 Partial을 사용하여 객체의 일부 속성을 선택적으로 만들어 준다.

type Person = {
  name: string;
  age: number;
  email: string;
};

const partialPerson: Partial<Person> = {
  name: "John",
  // age와 email을 제공하지 않아도 됨 (모두 optional이 된다.)
};

위 예제에서 Partial은 Person 타입의 모든 속성을 선택적으로 만든다. 따라서 partialPerson 객체에서 name 속성만 지정하고 다른 속성을 생략할 수 있다.

Partial은 TypeScript의 다양한 상황에서 유용하게 사용될 수 있으며, 객체 타입을 조작하고 새로운 타입을 생성할 때 도움이 된다.



Required<T>

이 타입은 주어진 타입 내의 모든 속성을 필수로 만들어주는 역할을 한다. 즉, 선택적인 속성을 가진 타입을 필수 속성으로 변환해준다. 위의 Partial 타입과 정반대인 역할이다.

interface User {
  name?: string;
  age?: number;
}

const partialUser: Partial<User> = {}; // Partial을 사용하여 모든 속성을 선택적으로 만듦

const requiredUser: Required<User> = { name: 'John', age: 30 }; 
// Required를 사용하여 모든 속성을 필수적으로 변경함


Readonly<T>

이 타입은 주어진 타입 내의 모든 속성을 읽기 전용으로 만들어준다. 즉, 객체의 속성을 수정할 수 없도록 만들어주는 역할이다.

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

const user: Readonly<User> = {
  name: 'Alice',
  age: 30,
};

user.name = 'Bob'; 		// 에러! 읽기 전용 속성으로 지정되어 수정할 수 없음

Readonly<Type>을 사용하면 코드 내에서 실수로 객체의 속성을 수정하는 것을 방지하고, 불변성을 유지하여 프로그램의 안정성을 높일 수 있다. 그러나 주의할 점은, Readonly로 만들어진 객체의 내부 속성이 참조하는 값은 변경이 가능할 수 있다. 따라서 이 값이 가변성을 가진 객체일 경우도 있으므로 신중한 사용이 필요하다.

profile
안녕하세요! 26살 프론트엔드 개발자입니다! (2024/03 ~)

0개의 댓글