패스잇
프론트엔드 개발 · 심화

런타임에 동적으로 생성되는 데이터 스키마(예: JSON Schema)에 대해, 이를 기반으로 TypeScript 타입 추론을 수행하고 컴파일 타임에 유효성 검사를 강화하는 '타입 레벨 프로그래밍' 기법을 어떻게 적용할 수 있을까요? 특히, 타입 가드와 커스텀 유틸리티 타입을 활용하여 복잡한 데이터 구조의 안정성을 확보하는 방안을 제시해주세요.

힌트 · 런타임 유효성 검사 라이브러리(예: Zod, Yup)와 TypeScript의 타입 추론을 연동하는 방식을 고려하거나, 조건부 타입과 제네릭을 사용하여 스키마 정의로부터 타입을 동적으로 생성하는 기법을 활용할 수 있습니다.

JSON Schema타입 추론타입 가드유틸리티 타입컴파일 타임 유효성 검사

모범답안

네, 좋은 질문입니다. 런타임에 동적으로 생성되는 JSON Schema로부터 TypeScript 타입을 추론하고 컴파일 타임 유효성 검사를 강화하는 방법은 매우 중요합니다.

저는 Zod나 Yup과 같은 런타임 유효성 검사 라이브러리와 TypeScript의 타입 추론을 연동하는 방식을 선호합니다. 먼저, 런타임에 JSON Schema를 기반으로 Zod 스키마를 생성합니다. 그 다음, z.infer<>를 사용하여 Zod 스키마로부터 TypeScript 타입을 추론합니다.

타입 가드를 활용하여 런타임에 데이터를 검증하고, 검증된 데이터에 대해서만 추론된 타입을 적용할 수 있습니다. 또한, 조건부 타입과 제네릭을 사용하여 스키마 정의로부터 복잡한 데이터 구조에 맞는 커스텀 유틸리티 타입을 생성하여 타입 안정성을 더욱 강화할 수 있습니다.

예를 들어, type MyType = Infer<typeof myZodSchema> 와 같이 Zod 스키마로부터 타입을 추출할 수 있습니다. 이를 통해 런타임 유효성 검사와 컴파일 타임 타입 검사를 동시에 만족시킬 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 TypeScript 면접 질문

← TypeScript 면접 질문 전체 보기