상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 타입스크립트에서 타입을 변환하는 유틸리티 타입은 무엇이 있나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
타입스크립트(TypeScript)에서는 타입 변환을 위한 여러 유틸리티 타입을 제공합니다. 이러한 유틸리티 타입은 코드의 재사용성을 높이고, 타입 안전성을 유지하면서도 다양한 상황에 맞게 타입을 변환할 수 있도록 도와줍니다. 아래에서는 타입스크립트에서 제공하는 주요 유틸리티 타입에 대해 자세히 설명하겠습니다. 1. `Partial<T>` `Partial<T>`는 주어진 타입 `T`의 모든 속성을 선택적으로 만듭니다. 즉, `T`의 모든 속성이 선택적(`?`)으로 변환됩니다. ```typescript interface User { id: number; name: string; email: string; } const updateUser: Partial<User> = { name: "Alice" }; ``` 2. `Required<T>` `Required<T>`는 주어진 타입 `T`의 모든 속성을 필수로 만듭니다. 즉, `T`의 모든 선택적 속성이 필수로 변환됩니다. ```typescript interface User { id: number; name?: string; } const <a href='https://sangseek.com/sangseeks/user/ko'>user</a>: Required<User> = { id: 1, name: "Alice" // name은 이제 필수입니다. }; ``` 3. `Readonly<T>` `Readonly<T>`는 주어진 타입 `T`의 모든 속성을 읽기 전용으로 만듭니다. 즉, `T`의 모든 속성이 `readonly`로 변환됩니다. ```typescript interface User { id: number; name: string; } const user: Readonly<User> = { id: 1, name: "Alice" }; // user.name = "Bob"; // 오류: 읽기 전용 속성입니다. ``` 4. `Record<K, T>` `Record<K, T>`는 키 `K`와 값 `T`의 쌍으로 이루어진 <a href='https://sangseek.com/sangseeks/객체 타입/ko'>객체 타입</a>을 생성합니다. `K`는 <a href='https://sangseek.com/sangseeks/문자열/ko'>문자열</a> 또는 숫자 리터럴 타입이어야 합니다. ```typescript type UserRoles = 'admin' | 'user' | 'guest'; const roles: Record<UserRoles, string> = { admin: "Administrator", user: "Regular User", guest: "Guest User" }; ``` 5. `Pick<T, K>` `Pick<T, K>`는 주어진 타입 `T`에서 특정 속성 `K`만 선택하여 새로운 타입을 생성합니다. `K`는 `T`의 속성 이름의 집합입니다. ```typescript interface User { id: number; name: string; email: string; } type UserName = Pick<User, 'name'>; // { name: string } ``` 6. `Omit<T, K>` `Omit<T, K>`는 주어진 타입 `T`에서 특정 속성 `K`를 제외한 새로운 타입을 생성합니다. `K`는 `T`의 속성 이름의 집합입니다. ```typescript interface User { id: number; name: string; email: string; } type UserWithoutEmail = Omit<User, 'email'>; // { id: number; name: string; } ``` 7. `Exclude<T, U>` `Exclude<T, U>`는 타입 `T`에서 타입 `U`에 해당하는 타입을 제외한 새로운 타입을 생성합니다. 주로 유니온 타입에서 특정 타입을 제거할 때 사용됩니다. ```typescript type A = 'a' | 'b' | 'c'; type B = Exclude<A, 'a'>; // 'b' | 'c' ``` 8. `Extract<T, U>` `Extract<T, U>`는 타입 `T`에서 타입 `U`에 해당하는 타입만 추출하여 새로운 타입을 생성합니다. 주로 유니온 타입에서 특정 타입을 추출할 때 사용됩니다. ```typescript type A = 'a' | 'b' | 'c'; type B = Extract<A, 'a' | 'b'>; // 'a' | 'b' ``` 9. `NonNullable<T>` `NonNullable<T>`는 주어진 타입 `T`에서 `null`과 `undefined`를 제외한 새로운 타입을 생성합니다. ```typescript type A = string | null | undefined; type B = NonNullable<A>; // string ``` 10. `ReturnType<T>` `ReturnType<T>`는 함수 타입 `T`의 반환 타입을 추출합니다. ```typescript type Func = () => string; type Result = ReturnType<Func>; // string ``` 11. `InstanceType<T>` `InstanceType<T>`는 생성자 함수 타입 `T`의 인스턴스 타입을 추출합니다. ```typescript class User { constructor(public name: string) {} } type UserInstance = InstanceType<typeof User>; // User ``` 이와 같은 유틸리티 타입들은 타입스크립트에서 타입을 변환하고 조작하는 데 매우 유용합니다. 이러한 타입들을 적절히 활용하면 코드의 가독성과 유지보수성을 높일 수 있으며, 타입 안전성을 보장할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기