
TypeScript는 변수에 타입을 명시적으로 붙일 수 있음
하지만 대부분의 경우 타입 추론이 동작 → 값을 보고 타입을 자동 결정
문자열/숫자/불린처럼 단순 값은 추론이 잘 되지만
파싱된 JSON이나 복잡한 객체는 any 타입이 될 수 있음
이 경우 개발자가 직접 타입을 지정해야 오류를 줄일 수 있음
함수 선언 시 매개변수 타입, 반환 타입을 모두 명시할 수 있음
function add(a: number, b: number): number {
return a + b;
}
반환값이 없는 함수는 void 또는 특정 경우 never를 사용
never는 반환되지 않는 함수에 사용 (EX: 예외함수, 무한루프)
TypeScript가 타입을 정확히 알 수 없는 상황에서는 자동으로 any로 떨어짐
any는 타입 체킹이 불가능해져 타입스크립트를 쓰는 의미가 감소
가능하면 unknown을 써서 안전하게 처리하거나, 직접 타입을 정의해야 함
TypeScript 배열은 “초기 넣은 값의 타입” 기준으로 결정되는 경우가 많음
처음 숫자를 넣으면 그 배열은 숫자 배열로 고정됨
readonly 배열은 수정 불가
여러 타입을 고정된 순서로 가지는 배열
let data: [string, number] = ["age", 30]
객체 타입 정의:
type Car = {
model: string
year: number
mileage?: number
}
?가 붙은 속성은 있어도 되고 없어도 되는 값
유니온: "A 또는 B"
let value: number | string
인터섹션: 두 타입을 모두 만족
type Person = NameInfo & AgeInfo
특정 이름 있는 상수들을 나열하는 방식
enum Direction {
North = 0,
East = 1,
South = 2,
West = 3
}
인터페이스: 객체 구조 정의에 강함
타입: 유니온, 인터섹션 등 복합적인 타입 만들기 유리
강의 기준:
객체 형태는 인터페이스
복합 타입은 type alias
여러 타입을 동일한 로직에서 재사용하기 위한 문법
EX)
class Box<T> {
value: T;
constructor(v: T) { this.value = v; }
getValue(): T { return this.value; }
}
new Box(10) → 숫자
new Box("hello") → 문자열
같은 구조지만 타입만 다르게 재사용 가능