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>를 쓰면 오타를 줄입니다.
구조적 타이핑
필드가 맞으면 할당됩니다. 클래스 상속보다 모양이 중요합니다.
문제 풀이 팁
- 입력 파싱 결과를 작은 interface로 묶기
- 헬퍼 인자·반환에 타입 붙이기
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분 규칙: 입력을 로그로 확인 → 기대/실제 한 줄 비교 → 그래도 안 되면 배우기 레슨으로 잠시 복귀.