배열 타입
const xs: number[] = [1, 2, 3];
const ys: Array<string> = ['a', 'b'];
읽기 전용이면 readonly number[]를 쓸 수 있습니다. 테스트 코드에서는 보통 가변 배열로 충분합니다.
간단한 제네릭
function first<T>(arr: T[]): T | undefined {
return arr[0];
}
T는 “나중에 정해질 타입”입니다. 호출 시점에 추론되거나 명시합니다.
map / filter 타입
const nums = [1, 2, 3];
const doubled: number[] = nums.map((n) => n * 2);
const evens = nums.filter((n): n is number => n % 2 === 0);
filter에 타입 프레디케이트를 붙이면 결과 타입이 더 정확해집니다.
객체 배열
type Row = { id: number; name: string };
function byId(rows: Row[], id: number): Row | undefined {
return rows.find((r) => r.id === id);
}
문제에서 JSON-like 구조를 다루면 type/interface로 행 모양을 먼저 적어두세요.
함정
any를 남발하면 TS를 끈 것과 같습니다.!non-null 단언은 실패 시 런타임 크래시입니다.?./ 가드를 선호하세요.
연습
ts-filter-even류 문제처럼 숫자 배열을 파싱해 짝수만 남기는 함수에 타입을 붙여 보세요.
튜플
const pair: [number, string] = [1, 'a'];
길이가 고정된 배열에 유용합니다. 나머지 파라미터와 구분하세요.
연습 체크
number[]파싱 → 짝수 필터 → 문자열로 join- 제네릭
last<T>작성 Row타입으로find헬퍼
한 줄: 배열 원소 타입을 먼저 적고, 그다음 알고리즘.