문법 · TS · intermediate

interface · type · 제네릭 맛보기

객체 모양을 이름 붙이고, Map/배열에 타입을 고정합니다.

배우기 · TypeScript 문법 · 11분 · 2/7 · typescript · interface

이 트랙 목차 (7)
  1. 1. 타입 주석·유니온·좁히기
  2. 2. interface · type · 제네릭 맛보기
  3. 3. 좁히기·가드: typeof, in, 판별 유니온
  4. 4. 배열·제네릭 함수 스케치
  5. 5. optional과 nullish: ?. ?? !
  6. 6. Promise와 async 함수 타입
  7. 7. 튜플·readonly 감각

interface vs type

interface Point {
  x: number;
  y: number;
}

type Id = string | number;

객체 모양은 interface, 유니온·별칭은 type이 읽기 쉬운 경우가 많습니다. 둘 다 가능합니다.

함수 타입

type Solver = (input: string) => string;
const solve: Solver = (input) => input.trim();

제네릭 (맛보기)

function first<T>(arr: T[]): T | undefined {
  return arr[0];
}

const m = new Map<string, number>();
m.set('a', 1);

해시 빈도 맵에 Map<string, number>를 쓰면 오타를 줄입니다.

구조적 타이핑

필드가 맞으면 할당됩니다. 클래스 상속보다 모양이 중요합니다.

문제 풀이 팁

  1. 입력 파싱 결과를 작은 interface로 묶기
  2. 헬퍼 인자·반환에 타입 붙이기
  3. as 단언은 최후 수단 (틀리면 런타임에만 터짐)

알고리즘에서의 현실적인 사용

입력이 문자열인 경우가 많아, interface는 파싱 결과를 담을 때 유용합니다.

interface Pair { i: number; j: number }

function solve(input: string): string {
  // ...
  const ans: Pair = { i: 0, j: 1 };
  return `${ans.i} ${ans.j}`;
}

제네릭은 Array<T>, Map<K,V> 정도만 익숙해지면 충분합니다.
유틸리티 타입·조건부 타입은 이 사이트 문제 범위 밖입니다.

더 깊게

읽은 뒤 연습장에서 예제 코드를 한 번 타이핑해 보세요. 눈으로만 보면 하루 뒤 사라집니다.

관련 원리 카드와 문제 태그로 바로 이어서 풀면, 문법·패턴이 한 묶음으로 남습니다.

막히면 30분 규칙: 입력을 로그로 확인 → 기대/실제 한 줄 비교 → 그래도 안 되면 배우기 레슨으로 잠시 복귀.

관련 짧은 원리

관련 문제