프론트엔드 개발 · 중급
JavaScript 라이브러리를 TypeScript 프로젝트에서 사용해야 할 때 `.d.ts` 선언 파일이 어떤 역할을 하는지 설명하고, 직접 선언 파일을 작성해야 하는 경우와 기존 선언 파일을 활용하는 방법을 비교하여 설명해 주세요.
힌트 · `.d.ts` 파일은 기존 JavaScript 코드에 대한 타입 정보를 제공하여 TypeScript 컴파일러가 타입 검사를 수행할 수 있게 하며, `@types` 패키지나 직접 `declare` 키워드를 사용하여 작성할 수 있습니다.
타입 정의타입 안정성컴파일 타임 검사ambient declarationDefinitelyTyped
모범답안
.d.ts 파일은 JavaScript 라이브러리를 TypeScript 프로젝트에서 사용할 때 타입 정보를 제공하는 역할을 합니다. TypeScript 컴파일러는 이 파일을 통해 JavaScript 코드의 타입을 이해하고, 타입 검사를 수행하여 잠재적인 오류를 미리 발견할 수 있도록 돕습니다.
만약 라이브러리에 이미 @types 패키지가 존재한다면, 해당 패키지를 설치하여 간편하게 타입 정보를 활용할 수 있습니다. 하지만 타입 정의가 제공되지 않는 경우에는 직접 .d.ts 파일을 작성해야 합니다. declare 키워드를 사용하여 변수, 함수, 클래스 등의 타입을 정의할 수 있습니다.
기존 선언 파일을 활용하는 것이 가장 효율적이지만, 없는 경우에는 직접 작성하여 타입 안정성을 확보하고 컴파일 타임에 오류를 검출할 수 있도록 하는 것이 중요합니다. DefinitelyTyped 저장소에 기여하는 방법도 고려해볼 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 TypeScript 면접 질문
- 공통된 속성을 가진 여러 인터페이스를 조합하여 판별된 유니언(Discriminated Unions)을 구성하는 방법과 이를 통해 얻을 수 있는 타입 안정성의 이점에 대해 설명해 주세요.
- TypeScript에서 제네릭(Generics)을 사용하는 주요 목적은 무엇이며, 제네릭 제약 조건(Generic Constraints)은 언제, 왜 필요한지 구체적인 코드 예시와 함께 설명해 주세요.
- TypeScript의 내장 유틸리티 타입 중 `Partial<T>`, `Pick<T, K>`, `Omit<T, K>` 각각의 역할과 실제 프로젝트에서 어떤 상황에 유용하게 활용될 수 있는지 설명해 주세요.
- TypeScript에서 타입 별칭(Type Aliases)과 인터페이스(Interfaces)는 모두 객체 타입을 정의하는 데 사용됩니다. 두 가지의 주요 차이점은 무엇이며, 각각 어떤 상황에서 더 적합한지 설명해 주세요.
- TypeScript의 데코레이터(Decorators)는 무엇이며, 클래스, 메서드, 속성 데코레이터의 기본적인 사용 목적과 실제 애플리케이션에서 어떤 방식으로 활용될 수 있는지 예시를 들어 설명해 주세요.
- 복잡한 비동기 데이터 처리 로직에서, 특정 조건에 따라 반환 타입이 동적으로 결정되는 함수를 TypeScript로 어떻게 안전하게 모델링하고 구현할 수 있을까요? 특히, 제네릭과 조건부 타입을 활용하여 Union Type을 분해하고 재구성하는 고급 기법을 설명해주세요.