목차
이 글은 타입스크립트 핸드북 Object Types를 읽고 스터디 발표를 위해 정리한 글입니다.
스터디원 모두가 해당 내용을 읽은 상태이므로 전체 내용을 담기보다는 핵심적인 부분과
제가 중요하게 생각한 포인트만 별도로 정리했습니다.
따라서 요약과 생략이 많을 수 있으니 양해 부탁드립니다. 감사합니다.
1. Object Type 기본
2. Property Modifiers (속성 한정자)
Optional (선택적 속성)
? 사용 → 존재하지 않아도 됨
- 읽을 때는
number | undefined 로 인식됨
- 기본값 지정은 구조 분해 할당으로 처리 가능
interface PaintOptions {
xPos?: number;
yPos?: number;
}
function draw({ xPos = 0, yPos = 0 }: PaintOptions) {}
readonly (읽기 전용)
- 컴파일 타임에 재할당 금지
- 내부 값은 변경 가능 (얕은 불변)
- 런타임에는 영향 없음 (개발 의도 표현용)
interface Home {
readonly owner: string;
}
3. Index Signatures (인덱스 시그니처)
4. Excess Property Checks (잉여 속성 검사)
5. Extending Types (타입 확장)
6. Intersection Types (&)
7. Interface vs Intersection 차이
| 구분 | Interface extends | Intersection (&) |
|---|
| 병합 방식 | 상속(확장) | 교집합(결합) |
| 충돌 시 | 에러 발생 | never |
| 의도 | 구조적 확장 | 타입 조건 결합 |
8. Generic Object Types (제네릭 객체 타입)
- “타입을 변수처럼” 받는 구조
interface Box<T> {
contents: T;
}
- 재사용성 극대화
Box<string> → { contents: string }
Box<number> → { contents: number }
- 함수에서도 활용 가능
function setContents<T>(box: Box<T>, value: T) {
box.contents = value;
}
- 타입 중복, 오버로드 제거 효과
9. Array & ReadonlyArray
| 구분 | 설명 |
|---|
| T[] = Array | 일반 배열 |
| readonly T[] = ReadonlyArray | 수정 불가능한 배열 |
| 할당성 | mutable → readonly 가능 / 반대 불가 |
| 목적 | 불변성 유지, 함수 인자로 안전하게 전달 |
10. Tuple & readonly Tuple
전체 개념 흐름 요약
| 개념 | 핵심 포인트 |
|---|
| Object Type | 기본 구조 정의 |
| Optional / readonly | 속성의 존재·수정 여부 |
| Index Signature | 동적 키 허용 |
| Excess Property Check | 오타 방지 안전장치 |
| Extends / & | 타입 확장 vs 결합 |
| Generic | 타입을 변수화하여 재사용 |
| Array / Tuple | 자료구조의 타입 표현 |
| readonly Array / Tuple | 불변성 보장 |