프론트엔드 개발 · 중급
TypeScript에서 제네릭(Generics)을 사용하는 주요 목적은 무엇이며, 제네릭 제약 조건(Generic Constraints)은 언제, 왜 필요한지 구체적인 코드 예시와 함께 설명해 주세요.
힌트 · 함수나 클래스에서 다양한 타입에 대해 유연하고 재사용 가능한 코드를 작성하기 위해 제네릭을 사용하며, 특정 속성이나 메서드를 가진 타입으로 제한할 때 제약 조건이 필요합니다.
타입 안정성코드 재사용성타입 추론제네릭 제약 조건유연성
모범답안
TypeScript에서 제네릭을 사용하는 주된 목적은 타입 안정성을 유지하면서 코드 재사용성을 높이는 것입니다. 제네릭을 사용하면 함수나 클래스가 다양한 타입에 대해 동작할 수 있도록 일반화할 수 있습니다.
제네릭 제약 조건은 특정 타입만 허용하도록 제한해야 할 때 필요합니다. 예를 들어, 특정 속성을 가진 객체만 처리하는 함수를 만들고 싶을 때 제약 조건을 사용합니다.
interface Lengthwise {
length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
console.log(arg.length);
return arg;
}
위 예시에서 Lengthwise 인터페이스를 사용하여 arg가 length 속성을 가지고 있는지 확인합니다. 이렇게 하면 length 속성이 없는 타입이 전달되는 것을 방지하여 타입 안정성을 확보할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 TypeScript 면접 질문
- 'enum' 타입은 무엇이며, TypeScript에서 'enum'을 사용하는 주된 목적과 간단한 예시를 들어 설명해주세요.
- TypeScript에서 여러 타입 중 특정 타입의 값을 안전하게 처리하기 위해 사용하는 타입 가드(Type Guards)의 종류와 각각의 사용 사례를 설명해 주세요.
- 공통된 속성을 가진 여러 인터페이스를 조합하여 판별된 유니언(Discriminated Unions)을 구성하는 방법과 이를 통해 얻을 수 있는 타입 안정성의 이점에 대해 설명해 주세요.
- TypeScript의 내장 유틸리티 타입 중 `Partial<T>`, `Pick<T, K>`, `Omit<T, K>` 각각의 역할과 실제 프로젝트에서 어떤 상황에 유용하게 활용될 수 있는지 설명해 주세요.
- JavaScript 라이브러리를 TypeScript 프로젝트에서 사용해야 할 때 `.d.ts` 선언 파일이 어떤 역할을 하는지 설명하고, 직접 선언 파일을 작성해야 하는 경우와 기존 선언 파일을 활용하는 방법을 비교하여 설명해 주세요.
- TypeScript에서 타입 별칭(Type Aliases)과 인터페이스(Interfaces)는 모두 객체 타입을 정의하는 데 사용됩니다. 두 가지의 주요 차이점은 무엇이며, 각각 어떤 상황에서 더 적합한지 설명해 주세요.