TypeScript 인터페이스 사용법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 대상자: TypeScript를 사용하는 프론트엔드 및 백엔드 개발자
- 난이도: 중급~고급 (인터페이스 정의, 제네릭, 팩토리 패턴 등 고급 개념 포함)
핵심 요약
- 인터페이스 정의:
interface
키워드를 사용하여 객체의 구조를 명확히 정의함 (interface Product { name: string; price: number; }
). - 옵셔널 프로퍼티:
?
를 사용하여 필수 여부를 유연하게 설정 (name?: string
). - 프레임워크 적용: React, Angular, Vue, Node.js 등 다양한 환경에서 인터페이스를 활용한 예시 제공.
섹션별 세부 요약
1. TypeScript 인터페이스 소개
- 인터페이스는 객체의 구조를 명시하고 타입 검사를 강제하는 도구.
- 기능 구현 없이 오직 구조 및 타입 검증에 집중.
- 예:
interface Product { name: string; price: number; }
2. 인터페이스 정의 및 사용
- 인라인 정의:
function getProductInfo(product: {name: string, price: number})
- 별도 인터페이스 사용:
interface Product { name: string; price: number; }
- 옵셔널 프로퍼티:
name?: string; age?: number;
3. 클래스에서 인터페이스 구현
class Person implements PersonInterface { ... }
- 인터페이스를 구현하는 클래스는 인터페이스의 모든 필수 프로퍼티를 포함해야 함.
4. 인터페이스 합성 및 병합
- 인터페이스 병합: 동일한 이름의 인터페이스를 병합하여 확장 가능 (
interface Person { name: string; } interface Person { age: number; }
). - 제네릭 인터페이스:
interface Cache
{ data: T; }
5. 프론트엔드 프레임워크 예시
- React:
ProductDisplay.tsx
에서Product
인터페이스를 사용하여 컴포넌트 props 정의. - Angular:
@Input()
로 인터페이스 기반 데이터 전달. - Vue 3:
defineProps<{ product: Product }>()
로 타입 안전한 props 정의.
6. 백엔드 예시 (Node.js + Express)
- User 인터페이스 정의:
export interface User { id: number; firstName: string; ... }
- REST API 구현:
/people
라우트에서User
인터페이스 기반 데이터 처리.
7. 인터뷰 질문 및 최고 실천 방법
- 인터뷰 주제: 인터페이스의 주요 특성, 제네릭 활용, 팩토리 패턴 적용.
- 최고 실천:
- 인터페이스 이름은 PascalCase 사용.
- 옵셔널 프로퍼티는 유연성을 위해 적절히 사용.
- 인터페이스 병합으로 중복 정의를 피함.
결론
TypeScript 인터페이스는 타입 안전성을 높이고 코드 가독성을 개선하는 핵심 도구로, React, Angular, Vue, Node.js 등 다양한 프레임워크에서 활용 가능. 옵셔널 프로퍼티, 제네릭, 인터페이스 병합 등 고급 패턴을 통해 실무에서 유연하게 적용할 수 있음.